avbridge 2.6.0 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/package.json +7 -1
package/CHANGELOG.md CHANGED
@@ -4,6 +4,50 @@ All notable changes to **avbridge.js** are documented here. The format follows
4
4
  [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and this project
5
5
  adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## [2.7.0]
8
+
9
+ Cross-browser confidence release. A Playwright-based test tier now
10
+ validates that avbridge picks the right strategy on each major browser
11
+ engine. No runtime code changes — the release is tooling, fixtures, and
12
+ a new testing discipline.
13
+
14
+ ### Added
15
+
16
+ - **Cross-browser test tier (Playwright).** New `tests/browser/` directory
17
+ with the matrix run via `npm run test:browser` across Chromium, Firefox,
18
+ and WebKit. Initial slice — `fixtures.spec.ts` — validates that `probe()`
19
+ and `classify()` produce the expected output for each fixture on each
20
+ browser (15 tests, ~11s). Per-browser expectations live in
21
+ `tests/browser/_expectations.ts` so evolving browser codec support is
22
+ a one-file change. Playwright's `webServer` config auto-starts Vite;
23
+ the five existing Puppeteer scripts are unchanged and continue to
24
+ cover Chromium-only scenarios. `npm run test:browser:ui` for the
25
+ interactive trace viewer.
26
+ - New test harness page at `demo/tests-harness.html` that exposes the
27
+ avbridge API on `window` for `page.evaluate()`-style tests. Only served
28
+ in dev mode; not shipped in production builds.
29
+ - New fixture: `bbb-hevc-aac.mkv` (generated via `npm run fixtures`) for
30
+ exercising the HEVC strategy boundary across browsers.
31
+ - `docs/dev/TESTING.md` — documents the new Tier 4 alongside the
32
+ existing three tiers, with scope guidance (what belongs in `fixtures`,
33
+ `playback`, and `contract` spec files).
34
+
35
+ ### Findings worth surfacing
36
+
37
+ - `classify()` is deliberately **browser-independent** for most codec
38
+ paths. Per-browser divergence surfaces at runtime via escalation, not
39
+ at classification. The test-tier split reflects this architecture:
40
+ `fixtures.spec.ts` for the deterministic decision, `playback.spec.ts`
41
+ (planned v2.7.1) for runtime escalation behavior.
42
+
43
+ ### Coming in follow-ups
44
+
45
+ - **v2.7.1** — `playback.spec.ts`. Bootstrap → play → destroy per
46
+ fixture per browser. Catches runtime escalation (e.g. Firefox
47
+ escalating HEVC MKV from remux → fallback when MSE rejects hevc1.*).
48
+ - **v2.7.2** — `contract.spec.ts`. HTMLMediaElement event + property
49
+ parity across strategies and browsers.
50
+
7
51
  ## [2.6.0]
8
52
 
9
53
  `<avbridge-player>` polish release. Four targeted ergonomics upgrades.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "avbridge",
3
- "version": "2.6.0",
3
+ "version": "2.7.0",
4
4
  "description": "Play and convert arbitrary video files in the browser. Native, remux, hybrid, fallback, and transcode — one API.",
5
5
  "license": "MIT",
6
6
  "author": "Keishi Hattori",
@@ -92,6 +92,11 @@
92
92
  "test:element": "node scripts/element-test.mjs",
93
93
  "test:player-controls": "node scripts/player-controls-test.mjs",
94
94
  "test:url-streaming": "node scripts/url-streaming-test.mjs",
95
+ "test:browser": "playwright test",
96
+ "test:browser:chromium": "playwright test --project=chromium",
97
+ "test:browser:firefox": "playwright test --project=firefox",
98
+ "test:browser:webkit": "playwright test --project=webkit",
99
+ "test:browser:ui": "playwright test --ui",
95
100
  "fixtures": "node scripts/generate-fixtures.mjs",
96
101
  "audit:bundle": "node scripts/bundle-audit.mjs"
97
102
  },
@@ -104,6 +109,7 @@
104
109
  "@libav.js/types": "^6.8.8"
105
110
  },
106
111
  "devDependencies": {
112
+ "@playwright/test": "^1.59.1",
107
113
  "@types/node": "^20.11.0",
108
114
  "jsdom": "^24.0.0",
109
115
  "puppeteer": "^24.40.0",