Repository navigation
v0.1.0
9l CLI 0.1.0
9l assess changes from an external trial on an 87-file Playwright suite.
--requirementsis optional. Code-level checks run without a contract;
requirement mapping is reported as not run. An empty value is a usage
error (#5).- Suites: several specs, a directory or a quoted pattern (
**supported)
give one combined report with per-file reports or error codes and a suite
summary. A file that cannot be assessed does not stop the others; the
command then exits 2. At most half the CPUs analyze at once, and a file
whose analyzer timed out is retried once on its own (#6). - Helpers: same-file helper functions are resolved, attributing their
assertions, waits and limits to the calling test.// @9l-assertion-helper
on a function or import declaration counts calls as reviewed assertions.
Imports into other files are not followed yet (#4). - Skip guards: file- and
describe-leveltest.skip(condition, reason)/
test.fixmemodifiers are no longer parsed as tests. Unconditional ones
givedisabled-test; conditional and after-hook ones give informational
conditional-skip; conditions readingprocess.envgive suspected
environment-skip. Calls that could be declarations, such as
test.skip(name, run), stay disabled tests (#7). - New finding
absence-after-wait(suspected) when the first assertion after
a fixed wait only checks that something is absent or did not happen (#8). - Unawaited
resolves/rejectsmatchers are flagged; unawaited matchers
outside the pinned Playwright API give anunknown-matcherlimit. - Every finding carries
code(#10). Text output omits empty fields, ends with
a per-rule summary and shows literal test titles with opt-in--titles(#11). - Report version 3, policy
assessment-source-v6. Consumers must accept the
informationalclassification, the new rules and limit code, an absent
requirementsSHA256and an optional testtitle.
Install
Download the archive for your platform and SHA256SUMS, verify, and put 9l on your PATH; see the installation guide. Example for Apple Silicon:
BUNDLE=9l-darwin-arm64
gh release download v0.1.0 --repo Quality-Max/9lives-runner --pattern "$BUNDLE.tar.gz" --pattern SHA256SUMS
awk -v archive="$BUNDLE.tar.gz" '$2 == archive' SHA256SUMS > selected.sha256
shasum -a 256 -c selected.sha256 # sha256sum -c on Linux
tar -xzf "$BUNDLE.tar.gz" && ./$BUNDLE/9l --version| Platform | Archive |
|---|---|
| macOS, Apple Silicon | 9l-darwin-arm64.tar.gz |
| macOS, Intel | 9l-darwin-amd64.tar.gz |
| Linux, x86-64 | 9l-linux-amd64.tar.gz |
| Linux, ARM64 | 9l-linux-arm64.tar.gz |
9l assess needs Node 22 or newer; the TypeScript parser is bundled. macOS archives are not Apple notarized.
Compatibility
Assessment reports are version 3, policy assessment-source-v6. Consumers of the JSON report must accept the informational classification, the conditional-skip, environment-skip and absence-after-wait rules, the unknown-matcher limit code, an absent requirementsSHA256 and an optional test title. The new suite report (several specs, a directory or a pattern) is a separate format, version 1. A single spec still produces the single-file report.
Assessment is advisory and source-only: it does not run tests, and its findings do not establish assertion coverage.
Verification
Before publication the release workflow ran the complete CI suite on the tagged commit (48f9cf3). It then built each archive on its own native macOS or Linux amd64/arm64 runner and ran --version, --help and a fixture plan there. After publication, the macOS arm64 archive was downloaded and its checksum verified. It reported 9l 0.1.0 (Go runner), and the SDK checkout demo ran with it to completion (1 passed, 0 failed).
SDK
@9l/playwright 0.1.0 (tag sdk-v0.1.0) is published on npm with provenance. Its peer range @playwright/test >=1.61.1 <2 lets projects on later Playwright 1.x releases install it; 1.61.1 remains the only qualified version. The npm tarball is byte-identical to the one CI qualified, and it installs with @playwright/test 1.61.1 and 1.64.0.
npm install --save-dev @9l/playwright@0.1.0 @playwright/test@1.61.1What's Changed
- Add a static explainer page and publish it with GitHub Pages by @Desperado in #2
- Stabilize SDK deadline smoke and identify failing cases by @Desperado in #3
- Make assess usable on existing suites without a contract by @Desperado in #12
- Flag environment-dependent skips and matchers of unknown timing by @Desperado in #16
- Flag absence assertions that directly follow a fixed wait by @Desperado in #13
- Assess a directory, pattern or several specs in one report by @Desperado in #14
- Resolve same-file assertion helpers and accept marked helpers by @Desperado in #15
- Prepare CLI and SDK release 0.1.0 by @Desperado in #17
Full Changelog: v0.0.0...v0.1.0