QE Run Workflow

Standalone QE test execution — runs all 6 test layers, classifies failures, and publishes results to Jira with auto-created bug tickets.

12 phasesQE_RUN_COMPLETEQE / SDET

Invocation

bash
# From a Jira ticket
/qe-run PROJ-1234

# Single test layer
/qe-run PROJ-1234 --layer e2e

# From an explicit test plan
/qe-run --from-plan ./TEST_PLAN.md

# Discovery mode (no ticket)
/qe-run "test the search API"

# Re-execute only previous failures
/qe-run --rerun

# Dry run (skip Jira publishing)
/qe-run PROJ-1234 --no-publish

# Commit + PR for new test files
/qe-run PROJ-1234 --pr

Pipeline

Phase Summary

Hover over any phase name to see what it does in detail.

#PhasePurposeKey Output
1INTAKEParse input, fetch ticket, locate test plansINTAKE.md
2DISCOVERMap test landscape, validate plans, identify layersDISCOVERY.md
3PLANConvert plans into executable commands per layerEXECUTION_PLAN.md
4SETUPCreate/update test files, test data, capture baselineSETUP_RESULT.md
5EXEC_FUNCTIONALRun unit + functional tests (no server)EXEC_FUNCTIONAL_RESULT.md
6EXEC_INTEGRATIONStart server, run integration/API testsEXEC_INTEGRATION_RESULT.md
7EXEC_E2EStart server, run E2E + cross-browser testsEXEC_E2E_RESULT.md
8EXEC_NONFUNCTIONALPerformance, security audit, accessibility scanEXEC_NONFUNCTIONAL_RESULT.md
9ANALYZEAggregate results, classify failures, determine verdictANALYSIS.md
10REPORTGenerate comprehensive QE reportQE_REPORT.md
11PUBLISHPost to Jira, create bug tickets, add labelsPUBLISH_RESULT.md
12LEARNPersist patterns to shared knowledge stores

6 Test Layers

Each layer executes independently. Missing frameworks are recommended, never blocking. Use --layer to run a single layer.

LayerScopeServerToolsSpeed
FunctionalUnit + component testsNoJest / Vitest / pytestFast
IntegrationAPI contracts, service integrationYesSupertest / Pact / httpxMedium
E2EUser journeys, cross-browserYesPlaywright / CypressSlow
PerformanceLoad, response time, throughputYesk6 / autocannon / artilleryMedium
SecurityDependency audit, static analysisNonpm audit / Snyk / ESLint securityFast
AccessibilityWCAG compliance, ARIA validationYesaxe-core / pa11y / LighthouseMedium

Failure Classification

The ANALYZE phase classifies every failure by comparing against the baseline captured in SETUP.

REGRESSION

Passed in baseline, fails now. Real issue.

NEW_TEST_FAILURE

Newly created test fails. Bug or test issue.

PRE_EXISTING

Already failing in baseline. Not new.

FLAKY

Inconsistent results across runs.

ENVIRONMENT

Server timeout, missing service. Not code.

Verdicts

VerdictMeaningJira Action
ALL_PASSZero failures across all layersAdd qe-verified label
PASS_WITH_KNOWNOnly pre-existing or flaky failuresAdd qe-verified label with caveat
REGRESSIONS_FOUNDTests that passed before now failCreate Bug tickets, add qe-issues-found label
CRITICAL_FAILURETest infrastructure brokenFlag environment issues for investigation
NONFUNCTIONAL_ISSUESFunctional tests pass, NFR findings existCreate tickets for critical NFR findings

What Gets Posted to Jira

The PUBLISH phase posts a QE report comment, creates Bug tickets for regressions, and adds labels.

## QE Execution Results

**Verdict:** REGRESSIONS_FOUND

**Run date:** 2026-03-06

### Test Summary

- Functional: 48/50 passed (2 regressions)

- Integration: 12/12 passed

- E2E: 8/9 passed (1 flaky)

- Performance: PASS — p95 < 200ms

- Security: WARN — 1 moderate vulnerability

- Accessibility: PASS — 0 critical violations

### Regression Bugs Created

- [PROJ-201] QE Regression: auth.test.ts login returns 401

- [PROJ-202] QE Regression: cart.test.ts total calculation off by 1

**Label added:** qe-issues-found

Story-QA Integration

/qe-run picks up where /story-qa left off. If a TEST_PLAN.md exists from a story-qa run, the PLAN phase converts it into executable commands instead of generating from scratch.

/story-qaTEST_PLAN.md/qe-runQE_REPORT.md

Signal Flow

SignalTypeMeaning
PHASE_COMPLETEAdvancePhase done, advance to next in pipeline
SETUP_FAILEDLoopbackSetup failed, retry up to 3 times
BLOCKED_NEEDS_HUMANBlockSetup failed 3 times, needs human intervention
EXEC_*_COMPLETEAdvanceExecution layer done (always advances, even with failures)
QE_RUN_COMPLETETerminalWorkflow complete, knowledge stores updated