Test Name: Coverage run produces a populated coverage table
Feature: Story vs. Test Coverage — real Claude scenarios
Traceability:
@SHIFT-53
Description: Verifies that submitting a user story with acceptance criteria alongside a BDD test file produces a coverage table with results.
This Test Verifies:
| Verification Step | What It Checks |
| Paste a user story with explicit acceptance criteria |
The page accepts a user story as input |
| Upload a BDD test case fixture |
The page accepts a test file upload |
| Click Check Coverage |
The coverage analysis is triggered |
| Result contains a coverage table with at least one row |
The analysis produces a non-empty coverage table mapping acceptance criteria to tests |
| Result is non-empty |
The overall output is populated and not blank |
Test Name: Non-covered AC rows have a risk value
Feature: Story vs. Test Coverage — real Claude scenarios
Traceability:
@SHIFT-53
Description: Verifies that acceptance criteria not covered by any test are flagged with a risk value in the coverage table.
This Test Verifies:
| Verification Step | What It Checks |
| Paste the story coverage login story fixture |
A known user story is submitted for analysis |
| Upload the story coverage incomplete test fixture |
A test file that does not cover all acceptance criteria is provided |
| Click Check Coverage |
The coverage analysis is triggered |
| Every non-covered row has a non-empty risk value |
Uncovered acceptance criteria display a risk assessment so stakeholders understand the gap |
Test Name: Fully covered AC rows have no risk value
Feature: Story vs. Test Coverage — real Claude scenarios
Traceability:
@SHIFT-53
Description: Verifies that acceptance criteria fully covered by tests do not show a risk value, keeping the report clean and unambiguous.
This Test Verifies:
| Verification Step | What It Checks |
| Paste the story coverage login story fixture |
A known user story is submitted for analysis |
| Upload the story coverage complete test fixture |
A test file that covers all acceptance criteria is provided |
| Click Check Coverage |
The coverage analysis is triggered |
| No covered row has a risk value |
Fully covered acceptance criteria are not incorrectly flagged with risk |
Test Name: Markdown download works after coverage run
Feature: Story vs. Test Coverage — real Claude scenarios
Traceability:
@SHIFT-56
Description: Verifies that once a coverage result is available, the user can download it as a Markdown file.
This Test Verifies:
| Verification Step | What It Checks |
| A coverage result has been produced |
A completed coverage analysis is available on the page |
| Click the Download MD button |
The Markdown export action is triggered |
| A .md file is downloaded |
The coverage report is successfully exported in Markdown format |
Test Name: HTML download works after coverage run
Feature: Story vs. Test Coverage — real Claude scenarios
Traceability:
@SHIFT-56
Description: Verifies that once a coverage result is available, the user can download it as an HTML file.
This Test Verifies:
| Verification Step | What It Checks |
| A coverage result has been produced |
A completed coverage analysis is available on the page |
| Click the Download HTML button |
The HTML export action is triggered |
| A .html file is downloaded |
The coverage report is successfully exported in HTML format |
Test Name: JSON download works after coverage run
Feature: Story vs. Test Coverage — real Claude scenarios
Traceability:
@SHIFT-56
Description: Verifies that once a coverage result is available, the user can download it as a JSON file.
This Test Verifies:
| Verification Step | What It Checks |
| A coverage result has been produced |
A completed coverage analysis is available on the page |
| Click the Download JSON button |
The JSON export action is triggered |
| A .json file is downloaded |
The coverage report is successfully exported in JSON format for programmatic use |
Test Name: Coverage run produces a populated coverage table
Feature: Story vs. Test Coverage — real Claude scenarios
Traceability:
@SHIFT-53
Execution:
Tag: @requires_login
Journey: A user pastes a user story with acceptance criteria, uploads a BDD test fixture, runs coverage analysis, and verifies a populated coverage table is returned.
| Scenario |
Given Context |
When Action |
Then Assertion |
Gherkin Type |
|
Coverage run produces a populated coverage table
|
User is on the Story Coverage page with a user story and BDD test fixture uploaded
|
User clicks Check Coverage
|
Result contains a coverage table with at least one row and is non-empty
|
Positive
|
Test Name: Non-covered AC rows have a risk value
Feature: Story vs. Test Coverage — real Claude scenarios
Traceability:
@SHIFT-53
Execution:
Tag: @requires_login
Journey: A user runs a coverage analysis using an incomplete test fixture and verifies that every non-covered acceptance criteria row carries a risk value.
| Scenario |
Given Context |
When Action |
Then Assertion |
Gherkin Type |
|
Non-covered AC rows have a risk value
|
User is on the Story Coverage page with the login story fixture and the incomplete test fixture uploaded
|
User clicks Check Coverage
|
Every non-covered row in the coverage table has a non-empty risk value
|
Negative
|
Test Name: Fully covered AC rows have no risk value
Feature: Story vs. Test Coverage — real Claude scenarios
Traceability:
@SHIFT-53
Execution:
Tag: @requires_login
Journey: A user runs a coverage analysis using a complete test fixture and verifies that covered acceptance criteria rows do not carry any risk value.
| Scenario |
Given Context |
When Action |
Then Assertion |
Gherkin Type |
|
Fully covered AC rows have no risk value
|
User is on the Story Coverage page with the login story fixture and the complete test fixture uploaded
|
User clicks Check Coverage
|
No covered row in the coverage table has a risk value
|
Positive
|
Test Name: Markdown download works after coverage run
Feature: Story vs. Test Coverage — real Claude scenarios
Traceability:
@SHIFT-56
Execution:
Tag: @requires_login
Journey: A user who has already produced a coverage result downloads it as a Markdown file and verifies the correct file type is received.
| Scenario |
Given Context |
When Action |
Then Assertion |
Gherkin Type |
|
Markdown download works after coverage run
|
User is on the Story Coverage page and a coverage result has been produced
|
User clicks the Download MD button
|
A .md file is downloaded
|
Positive
|
Test Name: HTML download works after coverage run
Feature: Story vs. Test Coverage — real Claude scenarios
Traceability:
@SHIFT-56
Execution:
Tag: @requires_login
Journey: A user who has already produced a coverage result downloads it as an HTML file and verifies the correct file type is received.
| Scenario |
Given Context |
When Action |
Then Assertion |
Gherkin Type |
|
HTML download works after coverage run
|
User is on the Story Coverage page and a coverage result has been produced
|
User clicks the Download HTML button
|
A .html file is downloaded
|
Positive
|
Test Name: JSON download works after coverage run
Feature: Story vs. Test Coverage — real Claude scenarios
Traceability:
@SHIFT-56
Execution:
Tag: @requires_login
Journey: A user who has already produced a coverage result downloads it as a JSON file and verifies the correct file type is received.
| Scenario |
Given Context |
When Action |
Then Assertion |
Gherkin Type |
|
JSON download works after coverage run
|
User is on the Story Coverage page and a coverage result has been produced
|
User clicks the Download JSON button
|
A .json file is downloaded
|
Positive
|