Question and Test Interoperability (QTI) 3 implementation evidence review Reviewed: October 5, 2026 Publisher: Longsight Repository: https://github.com/LongsightGroup/qti3 Commit: ece67118e4d74f83ca2c0481039993a32f174421 Package version: 0.13.1 Environment used - macOS - Node.js 26.4.0 - pnpm 10.30.1 - Vitest 4.1.11 - Playwright 1.60.0, Chromium project - xmllint for separate XML Schema Definition (XSD) validation Reproduce the results Use a fresh checkout of the public repository at the commit above. Install locked dependencies and build packages before the test suite: pnpm install --frozen-lockfile pnpm build pnpm exec vitest run --reporter=default --reporter=json --outputFile=/tmp/qti3-review-vitest.json pnpm check:test-xsd pnpm check:semantic-mutations pnpm exec playwright test tests/browser/player-challenges.spec.ts tests/browser/player-keyboard-a11y.spec.ts tests/browser/player-feedback.spec.ts tests/browser/package-library-scoring.spec.ts --project=chromium --reporter=line --output=/tmp/qti3-review-browser If Chromium is unavailable, install it before the browser tests: pnpm exec playwright install chromium The schema command requires xmllint and network access to the official schema sources. It checks pinned SHA-256 hashes before validating XML. Observed results - Package build: passed. - Full Vitest suite: 209 files passed, 1 skipped; 3,196 tests passed, 3 skipped, 0 failed. The skipped suite needs external certification content and validator evidence, neither configured in this checkout. - Separate QTI 3 XSD gate: passed for generated test/rubric documents and selected test-delivery, rubric-content, test-profile, and semantic-pilot fixtures. All 149 tests in nine selected scoring, challenge, and migration suites passed with positive XML checked against the pinned official schema. These 149 tests are included in the full suite, not additional unique tests. - Semantic mutation gate: all 19 curated faults were detected by the named behavioral tests. Nine faults concern the new challenge collection. - Four targeted Chromium suites: 46 passed, 0 failed. No retries configured. The initial full-suite attempt ran before the package build completed. Package imports and CLI entrypoint tests could not use missing build outputs. Building first and rerunning the unchanged suite produced the results above. Source references at the reviewed revision Base URL for every path below: https://github.com/LongsightGroup/qti3/blob/ece67118e4d74f83ca2c0481039993a32f174421/ - CHANGELOG.md: 0.13.1 behavior and compatibility changes. - packages/fixtures/CHALLENGES.md: ten new synthetic MIT challenge questions, literal expected answers, and the scope of composed scoring/restoration tests. - packages/fixtures/src/challenges.test.ts: fixed-answer and multi-turn tests. - packages/migrator/src/qti20-fidelity.test.ts: QTI 2.0 choice grades preserved for correct (1), incorrect (0), and unanswered (0) responses; refusal of unsupported scoring programs with both strict and safe repair policies. - packages/migrator/src/item-preservation-regressions.test.ts: language, surrounding content order, hottext cardinality, feedback refusal, and refusal to omit a source response declaration. - packages/migrator/src/material-content-fidelity.test.ts: uppercase pattern acceptance (ABC) and rejection (abc, ABCD), ordered QTI 1.2 HTML/text/images, plain-text preservation, and refusal of unpreservable material content. - packages/migrator/src/graphic-and-composite-fidelity.test.ts: hotspot labels, descriptions and grades; matching-group refusal; refusal to grade only one answer when the source requires a two-answer conjunction. - packages/migrator/src/index.test.ts: explicit assessment-test structure loss. - docs/test-execution-profile-review.md: execution profile and rejected constructs. - scripts/check-test-xsd.mjs: selected positive fixture schema checks. - packages/conformance/schemas/qti3/sources.json: official schema URLs/hashes. - scripts/check-semantic-mutations.mjs: curated faults and decisive witnesses. - tests/browser/player-challenges.spec.ts: ten challenge items entered, scored, restored, and checked with axe, including keyboard ordering and adaptive state. - tests/browser/player-keyboard-a11y.spec.ts: control names, tab order, focus, keyboard response entry, matching, and ordering. - tests/browser/player-feedback.spec.ts: feedback and restoration behavior. - tests/browser/package-library-scoring.spec.ts: scoring, feedback, reset, partial credit, validation, and processing failure behavior. Scope and limitations Longsight ran these checks locally against a fresh public checkout. Results apply to the fixed revision, selected fixtures, and stated environment. Tests use synthetic content. They do not report an institution's exam corpus or independent vendor import, export, rendering, scoring, or round-trip results. Automated accessibility checks do not establish WCAG conformance. This review used no screen reader and did not test Firefox, WebKit, a complete authoring product, or the complete institutional candidate experience. The XSD gate is separate from runtime validation. Schema-valid documents may contain constructs the finite execution profile rejects. The migration path returns items in a flat review part; assessment-test structure is not preserved. Platform authentication, navigation, timing policy, authoritative attempt storage, and LMS integration remain responsibilities of the host platform. This review did not run the complete release/certification gates, the separate legacy-transcoder XSD gate, production load/security tests, or an official certification assessment. Certification approval remains pending. Matrix: https://www.longsight.com/research/qti-3-implementation-matrix/ Migration guide: https://www.longsight.com/guides/qti-3-migration/