Scheduling & Workers
Automate test runs with cron-based scheduling and manage a fleet of worker servers. Get notified on Slack or email when runs complete, fail, or discover new gaps.
Overview
The Scheduling & Workers system lets you run your test suites on a recurring cadence without manual intervention. Define cron-based schedules that trigger test runs across specific layers and projects, allocate parallel workers to speed up execution, and receive instant notifications when something noteworthy happens. Whether you need nightly regression suites, hourly smoke tests, or weekly full-stack sweeps, the scheduler handles orchestration while you focus on building features.
Workers are the execution engines behind every scheduled run. Each worker is a server that connects to the TestOps platform via SSH, auto-registers through periodic heartbeats, and reports system metrics so you always know the health of your fleet. Together, schedules and workers form the backbone of continuous, unattended test execution.
Creating a Schedule
Navigate to Schedules > New Schedule from the left sidebar. The schedule builder walks you through a straightforward configuration flow:
- Select a project — Choose the project whose tests you want to automate. Only projects with at least one completed discovery are available.
- Choose test layers — Pick one or more layers to include: unit, integration, API, e2e, performance, or security. Each layer runs its own subset of tests.
- Set a cron expression — Enter a standard five-field cron expression such as 0 2 * * * for daily runs at 2:00 AM. A human-readable description of the cron expression is shown automatically below the input so you can verify the schedule at a glance.
- Pick a timezone— All schedules are timezone-aware. Select the timezone that matches your team's working hours or your deployment region.
- Set parallel workers (optional) — Allocate between 1 and 10 workers to execute the run in parallel. More workers reduce total run time but consume more server capacity.
Once saved, the schedule appears in the Schedules list with its next run time, selected layers, and current status. The scheduler will automatically trigger the run at the configured time.
Cron Expression Examples
Cron expressions use five fields: minute hour day-of-month month day-of-week. Here are some common patterns to get you started:
| Expression | Description |
|---|---|
| 0 2 * * * | Every day at 2:00 AM |
| 0 */6 * * * | Every 6 hours |
| 0 9 * * 1-5 | Weekdays at 9:00 AM |
| 0 0 * * 0 | Every Sunday at midnight |
| */30 * * * * | Every 30 minutes |
Use the * wildcard to match every value, */N for every N intervals, and A-B for ranges. The scheduler validates your expression and shows the next three upcoming run times before you save.
Managing Workers
Navigate to Settings > Server Pool to view and manage your worker fleet. Each worker in the pool displays the following information:
- Hostname— The server's network hostname or IP address used for SSH connections.
- Status — Current state of the worker: idle, running, or offline.
- CPU & Memory — Real-time resource utilization percentages reported by the worker agent.
- Last Heartbeat— Timestamp of the most recent heartbeat signal from the worker, shown as a relative time (e.g., "12 seconds ago").
Workers auto-register with the platform when they first send a heartbeat. To add a new worker, install the TestOps agent on the target server and configure it with your project's API key. The worker will appear in the Server Pool within 30 seconds.
Worker Health Monitoring
Every worker sends a heartbeat signal to the platform every 30 seconds. Each heartbeat includes system metrics that are stored for historical analysis and capacity planning. The health monitoring system works as follows:
Heartbeat interval: 30 seconds Offline threshold: 2 minutes (4 missed heartbeats) Metrics collected: CPU %, Memory %, Disk % Retention period: 30 days of historical data
If a worker misses its heartbeat for more than 2 minutes, it is automatically marked as offline and will not be assigned new test runs. Any in-progress run on that worker is flagged for review. Once the worker reconnects and resumes heartbeats, it transitions back to idle automatically.
CPU, memory, and disk metrics are tracked over time and displayed as sparkline charts in the Server Pool view. Use these trends to identify workers that are consistently overloaded and need to be scaled up or replaced.
Notifications
Stay informed about your scheduled test runs without watching the dashboard. TestOps supports two notification channels:
Slack Notifications
Configure a Slack webhook URL in your project settings under Settings > Notifications > Slack. Once connected, you'll receive real-time messages for:
- Run completion — Summary with pass/fail counts, duration, and a direct link to the report.
- Run failure — Immediate alert with the failure reason and affected test layers.
- New gap discoveries — When a scheduled run uncovers previously unseen coverage gaps, you get a breakdown of the new findings.
Email Notifications
Email notifications are sent via Calimatic Mail to all project members by default. You can customize recipients and toggle individual notification types per project. Email digests group multiple events into a single message if they occur within a 5-minute window.
Parallel Worker Allocation
Each schedule can specify between 1 and 10 parallel workers to execute the test run. When multiple workers are allocated, the test suite is split into roughly equal chunks and distributed across the available workers for concurrent execution.
Example: 200 tests with 4 workers Worker 1 → Tests 1 - 50 Worker 2 → Tests 51 - 100 Worker 3 → Tests 101 - 150 Worker 4 → Tests 151 - 200 Estimated speedup: ~3.6x (accounting for overhead)
More workers means faster total run time, but each worker consumes server resources. The scheduler will only assign workers that are currently in idle status. If fewer idle workers are available than requested, the run proceeds with the available count and a warning is logged. Tests are distributed using a round-robin strategy that accounts for estimated execution time to balance load evenly.
Pausing and Editing Schedules
Schedules can be paused at any time without deleting them. A paused schedule retains all of its configuration and run history but will not trigger new runs until resumed. This is useful during deployment freezes, maintenance windows, or when investigating flaky tests.
To edit a schedule, click the schedule name in the Schedules list and modify any of the following:
- Cron expression — Change the frequency or timing of the run.
- Test layers — Add or remove layers to adjust the scope of automated testing.
- Worker count — Scale parallel execution up or down based on your current server capacity.
- Timezone — Update the timezone if your team has shifted regions.
All changes take effect on the next scheduled run. If a run is currently in progress, it will complete with the original configuration. The updated settings are applied from the following trigger onward.