# Background Jobs

Most of Testifly’s work happens in the background, on Testifly’s servers or on your own Remote Runners. Each piece of work is a **job**. The **Jobs** page lists all jobs of your project, newest first, so you can see what is running, what is done and what failed.

## Which kinds of jobs are there?

| Job name              | What it does                                                                                                                | What starts it                                                                                               |
|-----------------------|----------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------|
| **Create Project**    | Builds and automates the login test, then starts feature discovery.                                                        | Creating a project that needs a login, changing login settings, or restarting discovery when the login test has no code |
| **Feature Discovery** | Maps your app and creates a feature for each page it finds.                                                               | Project setup, **Add Feature → Discover Feature**, or **Settings → Actions**                                 |
| **Page Scan**         | Scans one page: records its UI components, writes the feature description and creates tests. A discovery starts one Page Scan per page. | Feature Discovery                                                                                            |
| **Automating Tests**  | Turns written tests into test code.                                                                                        | The end of discovery, **Automate test**, **CREATE AND AUTOMATE**, an answer to _Awaiting Your Input_, or **Settings → Actions → Automate Tests** |
| **Execute Tests**     | Runs a set of tests and records results.                                                                                  | A run button, a schedule, or the [Test Execution API](/content/documentation/test-execution-api/index.html). The job name includes the suite or project name, for example _Execute Tests - Sanity_. |

Many jobs start other jobs. For example, one discovery starts many page scans, and they start automation, which then starts a run.

## What do the job statuses mean?

| Status                      | Meaning                                                                |
|-----------------------------|------------------------------------------------------------------------|  
| **New**                     | The job was created and is waiting for a free worker.                |
| **Scheduled**               | The job is planned for later.                                         |
| **Waiting For On-Prem Runner** | The job must run on one of your [Remote Runners](/content/documentation/remote-runners/index.html) and none has picked it up yet. |  
| **In Progress**             | The job is running.                                                  |
| **Done**                    | The job finished. This does not mean every test passed. Check the run for results. |  
| **Execution Failed**        | The job stopped because of an error.                                 |

## How do I follow a job in detail?

Click the open icon at the right of a job. A progress view shows each part of the job as a tree, with a status for every part. For example:

- A **Feature Discovery** shows the login, each page and, inside each page, the sections, UI components and tests being created.
- An **Automating Tests** job shows each feature and each test being automated.
- An **Execute Tests** job shows each test with its progress through login, prerequisites, steps and saving of the video.

The same live view appears on the dashboard right after you create a project.

## What should I do when a job fails?

1. Open the job and find the part marked as failed.
2. Check the common causes:
   - **Login failed** – check the test user and login page in **Settings → Environments**. A banner on the dashboard often says the same.
   - **Blocked by a robot check** – allow Testifly’s IP address in your firewall or bot protection. See [Disabling CAPTCHA](/content/documentation/robot/index.html).
   - **Feature limit reached** – the project cannot hold more features. See [Features](/content/documentation/features#why-can-i-not-add-more-features/index.html).
   - **Runner not connected** – for apps behind a VPN, check that your Remote Runner is running.
3. Start the work again:
   - For discovery: **Settings → Actions → Continue with feature discovery** or **Start feature discovery from the beginning**.
   - For automation: open the test and click **Automate test**, or use **Settings → Actions → Automate Tests**.
   - For a run: start the run again.

If the job keeps failing, email [support@testifly.dev](mailto:support@testifly.dev) with the job name and time.

## What happens to a job that gets stuck?

Every five minutes, Testifly checks for jobs that are not finished but have reported nothing for 24 hours. It marks them **Execution Failed** with the note _“Job was not updated for 24 hours”_. You can then start the work again.

## Can I start the same job twice?

No. If the same job is already waiting or running, Testifly tells you it is already scheduled and does not start a second copy. For example, you may see _“Rescrape Project is already scheduled”_ or _“The test is already scheduled for update. Please wait for it to finish.”_
