Skip to content

Test cases and videos

A task’s test cases say what has to work for the task to count as good: “WELCOME10 takes 10% off the total”, with its steps and the expected result. Each case has a key (TC-1, TC-2…), a status and a run history. When an agent with a browser tests them, each run leaves a video with subtitles and the verification of each case, annotated screenshots, the take (the JSON script that lets you repeat it) and a report in the “Reports” tab. Whoever reviews opens the task and watches the video instead of repeating the flow by hand.

This page covers cases as seen from a task. The library of cases that run on their own against each environment, with no task, is in Evidence.

  1. Open the task and scroll down to “Test cases”, below the description and the subtasks. Click “+ Add case”.

    Task panel with the Test cases block: progress bar, the buttons Run cases and Add case, five cases with status, priority and last run, and a red notice at the top
    The block summarizes how many pass and how many are covered. If any fails, the task shows the notice "Test case failing" with an "Open case" button.
  2. Fill in the form. Only “Title” is required; “Priority” starts at “Medium”. Write one behavior per case and an expected result that can be checked by looking at the screen, with real values: “Total $21,600” instead of “the calculation comes out right”. If you leave the title empty, the form says “A title is required.” and does not save. Click “Save”: the case gets the next key.

    Case form with Title, Priority, Description, Steps and Expected result
    Description, Steps and Expected result accept markdown. The key is not chosen: the new case gets the one after the task's highest TC.
  3. Click “Run cases”. Choose the “Agent”, type the “URL to test” and, if you want a before/after, “Compare with”; tick the “Cases” and click “Launch”. Thulu posts a comment in Activity that mentions the agent (“@qa run test cases TC-1, TC-2, TC-3 of this task on https://staging.store.example…”) with the instructions folded, and the notice says “Asked qa to run 3 cases. Follow it in the activity.”. The agent answers in that thread.

    The button appears off, with the reason, if no agent answers mentions or none has argus-browser on the stage it answers with. In the list, an agent without a browser shows as “qa (no browser)”. MCPs are configured stage by stage (see Agents and MCPs). An agent with argus-browser and octopus-api on the column also runs the cases when the task enters it; there the URL goes in the description.

    The browser runs inside the installation, so the URL has to be reachable from there: a staging, a per-PR preview or the app the agent starts in the Sandbox. A localhost on your machine does not work.

    Test cases block with TC-1 and TC-2 passed, TC-3 failed, TC-4 not run and TC-5 skipped, and below Sofía's mention of the qa agent with the two URLs and the agent's case-by-case answer
    A request with both URLs and the agent's answer in the same thread: what happened in each case, with the observed value, and what was left unrun.
  4. When the run ends, each case the agent verified changes status and gets ticked “covered”. Expand a case to see its runs, newest to oldest: verdict, when, who, what was observed, the video, and the links “Take (JSON)”, “Captures” and “Open in Reports”.

    Case TC-2 expanded with two runs: the new one passed with a before/after video and the old one failed with its video
    TC-2 with two runs: the one from 3 hours ago reproduced the bug (Fail, observed $24,000) and the latest, with the fix, passed.
  5. Watch the video. It shows the cursor, a ring on each click, the step as a subtitle and, at the moment of each verification, a green or red card with the expected and observed values. If the run was a before/after, both sides are synchronized step by step.

    Frame of a side-by-side video: on the left Before with the card TC-2 fails, on the right After with TC-2 passes
    A frame of the before/after video: the same step against the old version (fails, the total is still $24,000) and the new one (passes, $21,600).
  6. If a case ended as “Fail”, read the “observed” of its run and the annotated screenshot. Fix the code and ask for the run again: each round is a new run, earlier ones are not edited.

A run gathers everything an execution of a case left:

Part What it shows Where
Verdict “Pass”, “Fail” or “Blocked”. The case takes this status. Run header
Observed What was on screen, in one line (“Invalid coupon”) Below the verdict
Video MP4 with subtitles and verification cards; no dead waits Inside the run
“Captures (N)” Screenshots with numbered zones, notes and the rest darkened Opens the viewer with that run’s captures
“Take (JSON)” The run’s script: steps, selectors and verifications Downloads the file
“Report” The full report, folded under the run, without repeating the video “Open in Reports” opens it in its tab
Viewer with an annotated checkout screenshot: the coupon field marked 1 and the total $21,600 marked 2, each with its note
Annotated screenshot: each zone carries a number and a note, the rest of the screen is darkened and the header says which host and at what time.

The task’s “Reports” tab gathers one report per publication, newest to oldest. The title ends in “passes” if everything passed and in “fails” if something failed; inside are the tested URL, the screen size, the duration, the video, the cases table (in a before/after, with one column per side), the captures and the chapters with their minute, folded.

Reports tab with a report expanded: Before and After URLs, video, table with TC-1 to TC-3 in the Before and After columns and an annotated screenshot
A before/after report: TC-2 fails on Before and passes on After, and TC-3 fails on both sides. The case records what the After side gave.

From a run, “Open in Reports” takes you straight to its report.

The agent films with argus-browser’s evidence tool. Each case it verifies carries its key (TC-2) and, when possible, a measurement of the page that repeats the same way on every replay:

Measurement Compares Example of expected
Text An element’s visible text $21,600
Value What a field holds WELCOME10
Visible / hidden Whether the element is in view or not hidden for “the error does not appear”
Count How many elements match 3
URL The current address /orders/
Title The page title Checkout

The comparison can be exact, “contains” or a regular expression. By default, the tool waits up to 5 seconds for the value to match before marking the case failed, so a total that updates late does not give a false red. When the agent judges something that cannot be measured (“the icon is aligned”), the report marks it as observed by the agent.

Several verifications of the same case in one run make a single run: it passes if all pass. A key the task does not have (TC-9) is not recorded in any case; the agent’s answer lists it separately.

Status When
“Pending” Nobody ran it. It is the status when created.
“Pass” It ran and what was observed matches the expected result.
“Fail” It ran and does not match.
“Blocked” It could not run because of something outside the case: the environment is down, data is missing, another bug cuts the flow before.
“Skipped” It was decided not to run it on this task.

“covered” means someone tested it. A run ticks it by itself; you can also tick it by hand. You change the status from the row’s selector, but a change by hand leaves no run or video, and the row marks it “by hand”. Changing a case nobody ran to “Pass” asks for confirmation (“Mark TC-2 as passed?”). To leave a record, ask for the run.

Expand the case. “Edit” opens the same form in place; the ↑ and ↓ arrows move it in the list; “Delete” asks for confirmation and deletes the case with its runs. The videos and files of those runs stay on the task. Editing keeps the key and the history; deleting and creating again loses them.

Old tasks have their cases as a ## Test Cases section with a checklist in the description. While the task has no cases, the block offers “Import from body”: each line becomes a case, a line that starts with a key (- [ ] TC-1: …) keeps it, and ticked ones (- [x]) come in as “Pass” and covered.

Task with a three-line Test Cases section in the description and the Import from body button in the Test cases block
With the checklist in the description and no cases yet, "Import from body" appears.

After importing, the notice offers “Remove the section from the body”. From that moment the rows rule: if you leave the section, the block warns “The body still has the Test Cases section with these cases, and nothing keeps it up to date.” and what you tick in the checklist no longer changes any case’s status.

If the refinement stage has an agent with octopus-api, that agent can write the cases when planning the task, in the same format: one behavior per case, concrete steps and an expected result with values. Review them before moving the task to the stage that tests.

A case worth repeating on every release is copied to the Evidence library. Open “Evidence” in the sidebar, “From tasks” tab, and click “Add to library” on its row. If the case already had a filmed run, it is copied with its take (“Added to the library as EV-1, with its recording.”) and from then on it runs on its own against each environment.

Evidence screen, From tasks tab, with cases grouped by task, their status, last run and the Add to library button
"From tasks" gathers the cases of all the workspace's tasks, with filters by status, board, project, text and "Uncovered only".

/tasks/#task-<id>/TC-3 opens the task with that case expanded, for anyone with access to the workspace. The “Open case” button in the task’s notice does the same with the failing case; if several fail, the notice says how many (“2 test cases failing”) and opens the first.

  • A case at “Blocked”: the agent could not reach the test point. The run’s “observed” says why (for example, the environment returned 502). Fix the environment and ask for another run.
  • The task’s “Files” grows with each publication: the video, the chapters, the take and the captures are grouped in one item per report. The run’s links point to those files; if you delete one, the run shows “file deleted”.
  • A run that films flows that change data (creating an order, sending an email) is only repeated against disposable environments. The agent marks those steps and the tool refuses to replay the take unless the agent enables it on purpose, something that applies only against a preview or a test database.