# QA starter kit — version 1.0.0

## Released 11 October 2026
The downloadable archive contains a local Node.js fixture, pinned test dependencies, a lockfile, Playwright tests, a Postman collection, CI configuration and example report artifacts. Read the archive's README for the exact commands and supported runtime.

## Architecture
Browser or API test -> isolated session -> local fixture -> recorded assertion -> trace / Allure result -> human investigation.

The server owns synthetic products and order records. A browser context receives a separate session, so one test cannot quietly read or mutate another test's order. The expectation is written independently of the response: the known product costs 2000 minor units and the required total for two units is 4000.

## Checks
- A buyer adds a product and receives the expected order summary.
- An API client creates an order with the specified quantity and amount.
- A repeat request with the same idempotency key has one business effect.
- Reusing that key for a different payload is refused.
- A different session cannot read the first session's private order.
- Invalid quantity is rejected without creating an order.

## Fixture ownership
Each test gets its own context and synthetic state. The test server starts with a fresh in-memory store. Avoid importing production accounts or making assertions against mutable customer data. The example does not demonstrate a database cleanup strategy; adapt that boundary deliberately for a real application.

## CI gate
The included workflow runs the scoped checks and preserves diagnostic artifacts on failure. It does not treat retries as a repair or claim that a green run covers unrelated functionality. Review which checks should block a merge and who investigates a red result.

## Reports and updates
The kit records dependency versions in its lockfile and release date in its README. Re-run the tests when updating the dependencies or fixture. Allure data and traces are inspectable execution examples; regenerate them after modifying the scenario instead of forwarding the bundled run as evidence for changed code.
