diff --git a/packages/artplayer-plugin-danmuku/ARCHITECTURE.md b/packages/artplayer-plugin-danmuku/ARCHITECTURE.md
index 5df042aa6..ea7272cb2 100644
--- a/packages/artplayer-plugin-danmuku/ARCHITECTURE.md
+++ b/packages/artplayer-plugin-danmuku/ARCHITECTURE.md
@@ -12,8 +12,24 @@ the corresponding built formats; both loaded hashes appear in each attachment.
The actual Mask/model combination in `danmuku-mask-native.spec.js` now compiles
both plugins from source by default. `ARTPLAYER_MASK_ARTIFACT` and
`ARTPLAYER_DANMUKU_ARTIFACT` override them independently and fail on missing files.
-Do not substitute a stale dist file for source checks. Full old-plugin/core,
-OS fullscreen, installation, performance and device acceptance remain task 08/09.
+Do not substitute a stale dist file for source checks. Installation, remaining
+old-plugin combinations, combined-load performance and devices remain task 08/09.
+
+`danmuku-fullscreen.spec.js` tests all old/current core and plugin pairs in real
+document and CSS web fullscreen, with three fresh player lifetimes per case.
+Each lifetime must show a timestamp-delivered row, restore layout and release its
+Worker and DOM; the candidate also has no pending scheduler frame or operation.
+The published renderer has a hidden measurement node with the same text: locate
+the visible node, rather than assuming text uniquely identifies a render node.
+Wait for the native exit event before destroying the player; fullscreenElement
+can clear before the event is dispatched. Instance-local event records expose
+the frozen core's known BASE-LIFE-18 listeners after destroy, without attributing
+their events to a new player. The candidate must receive no later events.
+
+`danmuku-stability.spec.js` now includes both core versions. Use its core-prefixed
+test titles to select a matrix subset and retain the core field in observations.
+The three 14-second cycles and per-row assertions remain the same; this does not
+turn the bounded load test into a full-screen/model/PiP performance benchmark.
The compatibility reference is the actual npm 5.3.0 package. Its archive,
historical declarations, earlier exports and failure evidence are indexed in
diff --git a/refactor/baselines/danmuku-fullscreen-validation.json b/refactor/baselines/danmuku-fullscreen-validation.json
new file mode 100644
index 000000000..840223f39
--- /dev/null
+++ b/refactor/baselines/danmuku-fullscreen-validation.json
@@ -0,0 +1,12305 @@
+{
+ "schemaVersion": 1,
+ "task": "PKG-DANMUKU-08",
+ "status": "partial",
+ "capturedAt": "2026-09-14T13:06:02.581Z",
+ "scope": "Three fresh player lifetimes per old/current core/plugin pair in real CSS web and document fullscreen. Source includes frozen npm plugin; main/legacy select candidate plugin only.",
+ "reports": [
+ {
+ "file": "refactor/.cache/danmuku08-fullscreen-first-report/report.json",
+ "sha256": "ca6cd7d93c7c455587a4b234ca7f3e3ccb5cda3783165ae0b1bf654f71b6e5a1",
+ "stats": {
+ "startTime": "2026-09-14T12:54:23.935Z",
+ "duration": 20482.958,
+ "expected": 3,
+ "skipped": 0,
+ "unexpected": 5,
+ "flaky": 0
+ },
+ "result": {
+ "scope": "source",
+ "exitCode": 1,
+ "signal": null,
+ "args": [
+ "test",
+ "--config=playwright.source.config.js",
+ "test/browser/danmuku-fullscreen.spec.js",
+ "--project=chromium",
+ "--workers=2"
+ ]
+ },
+ "cases": [
+ {
+ "title": "published core / published Danmuku: web fullscreen across three player lifetimes",
+ "engine": "chromium",
+ "status": "failed",
+ "browser": "153.0.8010.12",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "errors": [
+ "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: getByText('Fullscreen row 0', { exact: true })\nExpected: visible\nError: strict mode violation: getByText('Fullscreen row 0', { exact: true }) resolved to 2 elements:\n 1)
Fullscreen row 0
aka getByText('Fullscreen row').first()\n 2) Fullscreen row 0
aka getByText('Fullscreen row').nth(1)\n\nCall log:\n\u001b[2m - Expect \"toBeVisible\" getByText('Fullscreen row 0', { exact: true }) with timeout 7000ms\u001b[22m\n\u001b[2m - waiting for getByText('Fullscreen row 0', { exact: true })\u001b[22m\n\n\n 88 | }, text)\n 89 | await expect.poll(() => page.evaluate(text => window.fullscreenRows.some(row => row.text === text), text)).toBe(true)\n> 90 | await expect(page.getByText(text, { exact: true })).toBeVisible()\n | ^\n 91 | const entered = await page.evaluate(() => ({\n 92 | width: window.art.template.$player.clientWidth,\n 93 | layerWidth: window.art.template.$danmuku.clientWidth,\n at D:\\github\\ArtPlayer\\test\\browser\\danmuku-fullscreen.spec.js:90:65"
+ ],
+ "fullscreen": {
+ "core": "published",
+ "plugin": "published",
+ "mode": "web",
+ "input": "npm 5.3.0",
+ "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f",
+ "cycles": [],
+ "outcome": "incomplete"
+ }
+ },
+ {
+ "title": "published core / published Danmuku: native fullscreen across three player lifetimes",
+ "engine": "chromium",
+ "status": "failed",
+ "browser": "153.0.8010.12",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "errors": [
+ "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: getByText('Fullscreen row 0', { exact: true })\nExpected: visible\nError: strict mode violation: getByText('Fullscreen row 0', { exact: true }) resolved to 2 elements:\n 1) Fullscreen row 0
aka getByText('Fullscreen row').first()\n 2) Fullscreen row 0
aka getByText('Fullscreen row').nth(1)\n\nCall log:\n\u001b[2m - Expect \"toBeVisible\" getByText('Fullscreen row 0', { exact: true }) with timeout 7000ms\u001b[22m\n\u001b[2m - waiting for getByText('Fullscreen row 0', { exact: true })\u001b[22m\n\n\n 88 | }, text)\n 89 | await expect.poll(() => page.evaluate(text => window.fullscreenRows.some(row => row.text === text), text)).toBe(true)\n> 90 | await expect(page.getByText(text, { exact: true })).toBeVisible()\n | ^\n 91 | const entered = await page.evaluate(() => ({\n 92 | width: window.art.template.$player.clientWidth,\n 93 | layerWidth: window.art.template.$danmuku.clientWidth,\n at D:\\github\\ArtPlayer\\test\\browser\\danmuku-fullscreen.spec.js:90:65"
+ ],
+ "fullscreen": {
+ "core": "published",
+ "plugin": "published",
+ "mode": "native",
+ "input": "npm 5.3.0",
+ "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f",
+ "cycles": [],
+ "outcome": "incomplete"
+ }
+ },
+ {
+ "title": "published core / candidate Danmuku: web fullscreen across three player lifetimes",
+ "engine": "chromium",
+ "status": "passed",
+ "browser": "153.0.8010.12",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "published",
+ "plugin": "candidate",
+ "mode": "web",
+ "input": "source UMD",
+ "sha256": "e8193aa8fae3329b3a8e435fc450726d9305e258dddea043ff3114f058516a66",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.302287
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.308623
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.300285
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed"
+ }
+ },
+ {
+ "title": "published core / candidate Danmuku: native fullscreen across three player lifetimes",
+ "engine": "chromium",
+ "status": "failed",
+ "browser": "153.0.8010.12",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "errors": [
+ "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoEqual\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // deep equality\u001b[22m\n\n\u001b[32m- Expected - 0\u001b[39m\n\u001b[31m+ Received + 2\u001b[39m\n\n\u001b[2m Array [\u001b[22m\n\u001b[2m true,\u001b[22m\n\u001b[31m+ true,\u001b[39m\n\u001b[31m+ false,\u001b[39m\n\u001b[2m false,\u001b[22m\n\u001b[2m ]\u001b[22m\n\n 129 | expect(after.styles).toBe(1)\n 130 | expect(after.errors).toEqual([])\n> 131 | expect(after.modes).toEqual([true, false])\n | ^\n 132 | expect(after.workers).toHaveLength(cycle + 1)\n 133 | for (const worker of after.workers) {\n 134 | expect(worker.replies).toBeGreaterThan(0)\n at D:\\github\\ArtPlayer\\test\\browser\\danmuku-fullscreen.spec.js:131:33"
+ ],
+ "fullscreen": {
+ "core": "published",
+ "plugin": "candidate",
+ "mode": "native",
+ "input": "source UMD",
+ "sha256": "e8193aa8fae3329b3a8e435fc450726d9305e258dddea043ff3114f058516a66",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.42319
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.424272
+ },
+ "after": {
+ "modes": [
+ true,
+ true,
+ false,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "incomplete"
+ }
+ },
+ {
+ "title": "candidate core / published Danmuku: web fullscreen across three player lifetimes",
+ "engine": "chromium",
+ "status": "failed",
+ "browser": "153.0.8010.12",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d",
+ "bytes": 378931
+ },
+ "errors": [
+ "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: getByText('Fullscreen row 0', { exact: true })\nExpected: visible\nError: strict mode violation: getByText('Fullscreen row 0', { exact: true }) resolved to 2 elements:\n 1) Fullscreen row 0
aka getByText('Fullscreen row').first()\n 2) Fullscreen row 0
aka getByText('Fullscreen row').nth(1)\n\nCall log:\n\u001b[2m - Expect \"toBeVisible\" getByText('Fullscreen row 0', { exact: true }) with timeout 7000ms\u001b[22m\n\u001b[2m - waiting for getByText('Fullscreen row 0', { exact: true })\u001b[22m\n\n\n 88 | }, text)\n 89 | await expect.poll(() => page.evaluate(text => window.fullscreenRows.some(row => row.text === text), text)).toBe(true)\n> 90 | await expect(page.getByText(text, { exact: true })).toBeVisible()\n | ^\n 91 | const entered = await page.evaluate(() => ({\n 92 | width: window.art.template.$player.clientWidth,\n 93 | layerWidth: window.art.template.$danmuku.clientWidth,\n at D:\\github\\ArtPlayer\\test\\browser\\danmuku-fullscreen.spec.js:90:65"
+ ],
+ "fullscreen": {
+ "core": "candidate",
+ "plugin": "published",
+ "mode": "web",
+ "input": "npm 5.3.0",
+ "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f",
+ "cycles": [],
+ "outcome": "incomplete"
+ }
+ },
+ {
+ "title": "candidate core / published Danmuku: native fullscreen across three player lifetimes",
+ "engine": "chromium",
+ "status": "failed",
+ "browser": "153.0.8010.12",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d",
+ "bytes": 378931
+ },
+ "errors": [
+ "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: getByText('Fullscreen row 0', { exact: true })\nExpected: visible\nError: strict mode violation: getByText('Fullscreen row 0', { exact: true }) resolved to 2 elements:\n 1) Fullscreen row 0
aka getByText('Fullscreen row').first()\n 2) Fullscreen row 0
aka getByText('Fullscreen row').nth(1)\n\nCall log:\n\u001b[2m - Expect \"toBeVisible\" getByText('Fullscreen row 0', { exact: true }) with timeout 7000ms\u001b[22m\n\u001b[2m - waiting for getByText('Fullscreen row 0', { exact: true })\u001b[22m\n\n\n 88 | }, text)\n 89 | await expect.poll(() => page.evaluate(text => window.fullscreenRows.some(row => row.text === text), text)).toBe(true)\n> 90 | await expect(page.getByText(text, { exact: true })).toBeVisible()\n | ^\n 91 | const entered = await page.evaluate(() => ({\n 92 | width: window.art.template.$player.clientWidth,\n 93 | layerWidth: window.art.template.$danmuku.clientWidth,\n at D:\\github\\ArtPlayer\\test\\browser\\danmuku-fullscreen.spec.js:90:65"
+ ],
+ "fullscreen": {
+ "core": "candidate",
+ "plugin": "published",
+ "mode": "native",
+ "input": "npm 5.3.0",
+ "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f",
+ "cycles": [],
+ "outcome": "incomplete"
+ }
+ },
+ {
+ "title": "candidate core / candidate Danmuku: web fullscreen across three player lifetimes",
+ "engine": "chromium",
+ "status": "passed",
+ "browser": "153.0.8010.12",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d",
+ "bytes": 378931
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "candidate",
+ "plugin": "candidate",
+ "mode": "web",
+ "input": "source UMD",
+ "sha256": "e8193aa8fae3329b3a8e435fc450726d9305e258dddea043ff3114f058516a66",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.295599
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.285728
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.305937
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed"
+ }
+ },
+ {
+ "title": "candidate core / candidate Danmuku: native fullscreen across three player lifetimes",
+ "engine": "chromium",
+ "status": "passed",
+ "browser": "153.0.8010.12",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d",
+ "bytes": 378931
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "candidate",
+ "plugin": "candidate",
+ "mode": "native",
+ "input": "source UMD",
+ "sha256": "e8193aa8fae3329b3a8e435fc450726d9305e258dddea043ff3114f058516a66",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.420091
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.40066
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.421755
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed"
+ }
+ }
+ ]
+ },
+ {
+ "file": "refactor/.cache/danmuku08-fullscreen-exit-first-report/report.json",
+ "sha256": "5927ab0e768672181e9bb4f8178697f0e68d187f7b641a169fbdf0bfea91f30c",
+ "stats": {
+ "startTime": "2026-09-14T12:59:57.971Z",
+ "duration": 80872.709,
+ "expected": 20,
+ "skipped": 0,
+ "unexpected": 4,
+ "flaky": 0
+ },
+ "result": {
+ "scope": "source",
+ "exitCode": 1,
+ "signal": null,
+ "args": [
+ "test",
+ "--config=playwright.source.config.js",
+ "test/browser/danmuku-fullscreen.spec.js",
+ "--workers=2"
+ ]
+ },
+ "cases": [
+ {
+ "title": "published core / published Danmuku: web fullscreen across three player lifetimes",
+ "engine": "chromium",
+ "status": "passed",
+ "browser": "153.0.8010.12",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "published",
+ "plugin": "published",
+ "mode": "web",
+ "input": "npm 5.3.0",
+ "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.305587
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.302409
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.292386
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.818216
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.80352
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.786962
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "published core / published Danmuku: native fullscreen across three player lifetimes",
+ "engine": "chromium",
+ "status": "passed",
+ "browser": "153.0.8010.12",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "published",
+ "plugin": "published",
+ "mode": "native",
+ "input": "npm 5.3.0",
+ "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.394856
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.3803
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.417738
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false,
+ true,
+ false,
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.90935
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false,
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.903625
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.91707
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "published core / candidate Danmuku: web fullscreen across three player lifetimes",
+ "engine": "chromium",
+ "status": "passed",
+ "browser": "153.0.8010.12",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "published",
+ "plugin": "candidate",
+ "mode": "web",
+ "input": "source UMD",
+ "sha256": "e8193aa8fae3329b3a8e435fc450726d9305e258dddea043ff3114f058516a66",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.303321
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.285748
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.324368
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.808347
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.790806
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.818202
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "published core / candidate Danmuku: native fullscreen across three player lifetimes",
+ "engine": "chromium",
+ "status": "passed",
+ "browser": "153.0.8010.12",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "published",
+ "plugin": "candidate",
+ "mode": "native",
+ "input": "source UMD",
+ "sha256": "e8193aa8fae3329b3a8e435fc450726d9305e258dddea043ff3114f058516a66",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.3975
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.393407
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.391375
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false,
+ true,
+ false,
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.92484
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false,
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.889227
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.888514
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "candidate core / published Danmuku: web fullscreen across three player lifetimes",
+ "engine": "chromium",
+ "status": "passed",
+ "browser": "153.0.8010.12",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d",
+ "bytes": 378931
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "candidate",
+ "plugin": "published",
+ "mode": "web",
+ "input": "npm 5.3.0",
+ "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.287732
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.304802
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.306601
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.804428
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.805052
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.820109
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "candidate core / published Danmuku: native fullscreen across three player lifetimes",
+ "engine": "chromium",
+ "status": "passed",
+ "browser": "153.0.8010.12",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d",
+ "bytes": 378931
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "candidate",
+ "plugin": "published",
+ "mode": "native",
+ "input": "npm 5.3.0",
+ "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.421158
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.407455
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.404603
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.920465
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.906354
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.906628
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "candidate core / candidate Danmuku: web fullscreen across three player lifetimes",
+ "engine": "chromium",
+ "status": "passed",
+ "browser": "153.0.8010.12",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d",
+ "bytes": 378931
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "candidate",
+ "plugin": "candidate",
+ "mode": "web",
+ "input": "source UMD",
+ "sha256": "e8193aa8fae3329b3a8e435fc450726d9305e258dddea043ff3114f058516a66",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.293472
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.312246
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.287302
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.805568
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.823699
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.805252
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "candidate core / candidate Danmuku: native fullscreen across three player lifetimes",
+ "engine": "chromium",
+ "status": "passed",
+ "browser": "153.0.8010.12",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d",
+ "bytes": 378931
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "candidate",
+ "plugin": "candidate",
+ "mode": "native",
+ "input": "source UMD",
+ "sha256": "e8193aa8fae3329b3a8e435fc450726d9305e258dddea043ff3114f058516a66",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.42429
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.400802
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.394154
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.93993
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.906686
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.905918
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "published core / published Danmuku: web fullscreen across three player lifetimes",
+ "engine": "firefox",
+ "status": "passed",
+ "browser": "155.0",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "published",
+ "plugin": "published",
+ "mode": "web",
+ "input": "npm 5.3.0",
+ "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.197675
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.151079
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.376561
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.70956
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.625697
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.875997
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "published core / published Danmuku: native fullscreen across three player lifetimes",
+ "engine": "firefox",
+ "status": "passed",
+ "browser": "155.0",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "published",
+ "plugin": "published",
+ "mode": "native",
+ "input": "npm 5.3.0",
+ "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1366,
+ "layerWidth": 1366,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 0.917785
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1366,
+ "layerWidth": 1366,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.127668
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1366,
+ "layerWidth": 1366,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.418264
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false,
+ true,
+ false,
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.87473
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false,
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.601132
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.876731
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "published core / candidate Danmuku: web fullscreen across three player lifetimes",
+ "engine": "firefox",
+ "status": "passed",
+ "browser": "155.0",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "published",
+ "plugin": "candidate",
+ "mode": "web",
+ "input": "source UMD",
+ "sha256": "e8193aa8fae3329b3a8e435fc450726d9305e258dddea043ff3114f058516a66",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.375693
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.375387
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.376667
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.877128
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.875062
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.876148
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "published core / candidate Danmuku: native fullscreen across three player lifetimes",
+ "engine": "firefox",
+ "status": "passed",
+ "browser": "155.0",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "published",
+ "plugin": "candidate",
+ "mode": "native",
+ "input": "source UMD",
+ "sha256": "e8193aa8fae3329b3a8e435fc450726d9305e258dddea043ff3114f058516a66",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1366,
+ "layerWidth": 1366,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.418203
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1366,
+ "layerWidth": 1366,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.14767
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1366,
+ "layerWidth": 1366,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.376448
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false,
+ true,
+ false,
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.876055
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false,
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.619397
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.884482
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "candidate core / published Danmuku: web fullscreen across three player lifetimes",
+ "engine": "firefox",
+ "status": "passed",
+ "browser": "155.0",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d",
+ "bytes": 378931
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "candidate",
+ "plugin": "published",
+ "mode": "web",
+ "input": "npm 5.3.0",
+ "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.164867
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.162877
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.38304
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.666878
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.63526
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.885454
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "candidate core / published Danmuku: native fullscreen across three player lifetimes",
+ "engine": "firefox",
+ "status": "passed",
+ "browser": "155.0",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d",
+ "bytes": 378931
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "candidate",
+ "plugin": "published",
+ "mode": "native",
+ "input": "npm 5.3.0",
+ "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1366,
+ "layerWidth": 1366,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.418523
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1366,
+ "layerWidth": 1366,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.155952
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1366,
+ "layerWidth": 1366,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 0.874467
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.876216
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.629133
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.874467
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "candidate core / candidate Danmuku: web fullscreen across three player lifetimes",
+ "engine": "firefox",
+ "status": "passed",
+ "browser": "155.0",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d",
+ "bytes": 378931
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "candidate",
+ "plugin": "candidate",
+ "mode": "web",
+ "input": "source UMD",
+ "sha256": "e8193aa8fae3329b3a8e435fc450726d9305e258dddea043ff3114f058516a66",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.126851
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.406531
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.168395
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.626185
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.874941
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.631091
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "candidate core / candidate Danmuku: native fullscreen across three player lifetimes",
+ "engine": "firefox",
+ "status": "passed",
+ "browser": "155.0",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d",
+ "bytes": 378931
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "candidate",
+ "plugin": "candidate",
+ "mode": "native",
+ "input": "source UMD",
+ "sha256": "e8193aa8fae3329b3a8e435fc450726d9305e258dddea043ff3114f058516a66",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1366,
+ "layerWidth": 1366,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.395735
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1366,
+ "layerWidth": 1366,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.421872
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1366,
+ "layerWidth": 1366,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.168301
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.870158
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.8868
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.628731
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "published core / published Danmuku: web fullscreen across three player lifetimes",
+ "engine": "webkit",
+ "status": "passed",
+ "browser": "26.6",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "published",
+ "plugin": "published",
+ "mode": "web",
+ "input": "npm 5.3.0",
+ "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.4189168
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.463021
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.4471668
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.8705625
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.9387501
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.8884167
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "published core / published Danmuku: native fullscreen across three player lifetimes",
+ "engine": "webkit",
+ "status": "failed",
+ "browser": "26.6",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "errors": [
+ "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoEqual\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // deep equality\u001b[22m\n\n\u001b[32m- Expected - 1\u001b[39m\n\u001b[31m+ Received + 0\u001b[39m\n\n\u001b[2m Array [\u001b[22m\n\u001b[2m true,\u001b[22m\n\u001b[32m- false,\u001b[39m\n\u001b[2m ]\u001b[22m\n\n 133 | expect(after.styles).toBe(1)\n 134 | expect(after.errors).toEqual([])\n> 135 | expect(after.modes).toEqual([true, false])\n | ^\n 136 | expect(after.workers).toHaveLength(cycle + 1)\n 137 | for (const worker of after.workers) {\n 138 | expect(worker.replies).toBeGreaterThan(0)\n at D:\\github\\ArtPlayer\\test\\browser\\danmuku-fullscreen.spec.js:135:33"
+ ],
+ "fullscreen": {
+ "core": "published",
+ "plugin": "published",
+ "mode": "native",
+ "input": "npm 5.3.0",
+ "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.6261877
+ },
+ "after": {
+ "modes": [
+ true
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ }
+ ],
+ "outcome": "incomplete"
+ }
+ },
+ {
+ "title": "published core / candidate Danmuku: web fullscreen across three player lifetimes",
+ "engine": "webkit",
+ "status": "passed",
+ "browser": "26.6",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "published",
+ "plugin": "candidate",
+ "mode": "web",
+ "input": "source UMD",
+ "sha256": "e8193aa8fae3329b3a8e435fc450726d9305e258dddea043ff3114f058516a66",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.6495627
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.4110001
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.4964793
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 1.1040418
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.8834584
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.9641043
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "published core / candidate Danmuku: native fullscreen across three player lifetimes",
+ "engine": "webkit",
+ "status": "failed",
+ "browser": "26.6",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "errors": [
+ "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoEqual\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // deep equality\u001b[22m\n\n\u001b[32m- Expected - 1\u001b[39m\n\u001b[31m+ Received + 0\u001b[39m\n\n\u001b[2m Array [\u001b[22m\n\u001b[2m true,\u001b[22m\n\u001b[32m- false,\u001b[39m\n\u001b[2m ]\u001b[22m\n\n 133 | expect(after.styles).toBe(1)\n 134 | expect(after.errors).toEqual([])\n> 135 | expect(after.modes).toEqual([true, false])\n | ^\n 136 | expect(after.workers).toHaveLength(cycle + 1)\n 137 | for (const worker of after.workers) {\n 138 | expect(worker.replies).toBeGreaterThan(0)\n at D:\\github\\ArtPlayer\\test\\browser\\danmuku-fullscreen.spec.js:135:33"
+ ],
+ "fullscreen": {
+ "core": "published",
+ "plugin": "candidate",
+ "mode": "native",
+ "input": "source UMD",
+ "sha256": "e8193aa8fae3329b3a8e435fc450726d9305e258dddea043ff3114f058516a66",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.491271
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.3739377
+ },
+ "after": {
+ "modes": [
+ true
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "incomplete"
+ }
+ },
+ {
+ "title": "candidate core / published Danmuku: web fullscreen across three player lifetimes",
+ "engine": "webkit",
+ "status": "passed",
+ "browser": "26.6",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d",
+ "bytes": 378931
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "candidate",
+ "plugin": "published",
+ "mode": "web",
+ "input": "npm 5.3.0",
+ "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.4675002
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.4633543
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.3901877
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.9397917
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.9360209
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.9301251
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "candidate core / published Danmuku: native fullscreen across three player lifetimes",
+ "engine": "webkit",
+ "status": "failed",
+ "browser": "26.6",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d",
+ "bytes": 378931
+ },
+ "errors": [
+ "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoEqual\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // deep equality\u001b[22m\n\n\u001b[32m- Expected - 1\u001b[39m\n\u001b[31m+ Received + 0\u001b[39m\n\n\u001b[2m Array [\u001b[22m\n\u001b[2m true,\u001b[22m\n\u001b[32m- false,\u001b[39m\n\u001b[2m ]\u001b[22m\n\n 133 | expect(after.styles).toBe(1)\n 134 | expect(after.errors).toEqual([])\n> 135 | expect(after.modes).toEqual([true, false])\n | ^\n 136 | expect(after.workers).toHaveLength(cycle + 1)\n 137 | for (const worker of after.workers) {\n 138 | expect(worker.replies).toBeGreaterThan(0)\n at D:\\github\\ArtPlayer\\test\\browser\\danmuku-fullscreen.spec.js:135:33"
+ ],
+ "fullscreen": {
+ "core": "candidate",
+ "plugin": "published",
+ "mode": "native",
+ "input": "npm 5.3.0",
+ "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.6771877
+ },
+ "after": {
+ "modes": [
+ true
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ }
+ ],
+ "outcome": "incomplete"
+ }
+ },
+ {
+ "title": "candidate core / candidate Danmuku: web fullscreen across three player lifetimes",
+ "engine": "webkit",
+ "status": "passed",
+ "browser": "26.6",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d",
+ "bytes": 378931
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "candidate",
+ "plugin": "candidate",
+ "mode": "web",
+ "input": "source UMD",
+ "sha256": "e8193aa8fae3329b3a8e435fc450726d9305e258dddea043ff3114f058516a66",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.6823752
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.3943335
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.508021
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 1.1490834
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.869875
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.9733543
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "candidate core / candidate Danmuku: native fullscreen across three player lifetimes",
+ "engine": "webkit",
+ "status": "failed",
+ "browser": "26.6",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d",
+ "bytes": 378931
+ },
+ "errors": [
+ "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoEqual\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // deep equality\u001b[22m\n\n\u001b[32m- Expected - 1\u001b[39m\n\u001b[31m+ Received + 0\u001b[39m\n\n\u001b[2m Array [\u001b[22m\n\u001b[2m true,\u001b[22m\n\u001b[32m- false,\u001b[39m\n\u001b[2m ]\u001b[22m\n\n 133 | expect(after.styles).toBe(1)\n 134 | expect(after.errors).toEqual([])\n> 135 | expect(after.modes).toEqual([true, false])\n | ^\n 136 | expect(after.workers).toHaveLength(cycle + 1)\n 137 | for (const worker of after.workers) {\n 138 | expect(worker.replies).toBeGreaterThan(0)\n at D:\\github\\ArtPlayer\\test\\browser\\danmuku-fullscreen.spec.js:135:33"
+ ],
+ "fullscreen": {
+ "core": "candidate",
+ "plugin": "candidate",
+ "mode": "native",
+ "input": "source UMD",
+ "sha256": "e8193aa8fae3329b3a8e435fc450726d9305e258dddea043ff3114f058516a66",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.3409584
+ },
+ "after": {
+ "modes": [
+ true
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "incomplete"
+ }
+ }
+ ]
+ },
+ {
+ "file": "refactor/.cache/danmuku08-fullscreen-source-report/report.json",
+ "sha256": "65390cb14d155e35036311b2ff6cf97f35c60feb154ebe578b7af699ad81a666",
+ "stats": {
+ "startTime": "2026-09-14T13:01:54.048Z",
+ "duration": 86398.68000000001,
+ "expected": 24,
+ "skipped": 0,
+ "unexpected": 0,
+ "flaky": 0
+ },
+ "result": {
+ "scope": "source",
+ "exitCode": 0,
+ "signal": null,
+ "args": [
+ "test",
+ "--config=playwright.source.config.js",
+ "test/browser/danmuku-fullscreen.spec.js",
+ "--workers=2"
+ ]
+ },
+ "cases": [
+ {
+ "title": "published core / published Danmuku: web fullscreen across three player lifetimes",
+ "engine": "chromium",
+ "status": "passed",
+ "browser": "153.0.8010.12",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "published",
+ "plugin": "published",
+ "mode": "web",
+ "input": "npm 5.3.0",
+ "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.311276
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.301213
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.336758
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.821775
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.809219
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.83148
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "published core / published Danmuku: native fullscreen across three player lifetimes",
+ "engine": "chromium",
+ "status": "passed",
+ "browser": "153.0.8010.12",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "published",
+ "plugin": "published",
+ "mode": "native",
+ "input": "npm 5.3.0",
+ "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.355981
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.417251
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.405935
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false,
+ true,
+ false,
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.858451
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false,
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.922198
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.905579
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "published core / candidate Danmuku: web fullscreen across three player lifetimes",
+ "engine": "chromium",
+ "status": "passed",
+ "browser": "153.0.8010.12",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "published",
+ "plugin": "candidate",
+ "mode": "web",
+ "input": "source UMD",
+ "sha256": "e8193aa8fae3329b3a8e435fc450726d9305e258dddea043ff3114f058516a66",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.313195
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.296546
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.287347
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.808599
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.806425
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.788396
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "published core / candidate Danmuku: native fullscreen across three player lifetimes",
+ "engine": "chromium",
+ "status": "passed",
+ "browser": "153.0.8010.12",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "published",
+ "plugin": "candidate",
+ "mode": "native",
+ "input": "source UMD",
+ "sha256": "e8193aa8fae3329b3a8e435fc450726d9305e258dddea043ff3114f058516a66",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.40039
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.396518
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.383932
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false,
+ true,
+ false,
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.923523
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false,
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.904751
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.905907
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "candidate core / published Danmuku: web fullscreen across three player lifetimes",
+ "engine": "chromium",
+ "status": "passed",
+ "browser": "153.0.8010.12",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d",
+ "bytes": 378931
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "candidate",
+ "plugin": "published",
+ "mode": "web",
+ "input": "npm 5.3.0",
+ "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.306942
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.30023
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.320403
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.816921
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.805887
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.831516
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "candidate core / published Danmuku: native fullscreen across three player lifetimes",
+ "engine": "chromium",
+ "status": "passed",
+ "browser": "153.0.8010.12",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d",
+ "bytes": 378931
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "candidate",
+ "plugin": "published",
+ "mode": "native",
+ "input": "npm 5.3.0",
+ "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.356246
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.417083
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.312277
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.858305
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.922136
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.806533
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "candidate core / candidate Danmuku: web fullscreen across three player lifetimes",
+ "engine": "chromium",
+ "status": "passed",
+ "browser": "153.0.8010.12",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d",
+ "bytes": 378931
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "candidate",
+ "plugin": "candidate",
+ "mode": "web",
+ "input": "source UMD",
+ "sha256": "e8193aa8fae3329b3a8e435fc450726d9305e258dddea043ff3114f058516a66",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.300938
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.289118
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.297129
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.816116
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.807087
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.806969
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "candidate core / candidate Danmuku: native fullscreen across three player lifetimes",
+ "engine": "chromium",
+ "status": "passed",
+ "browser": "153.0.8010.12",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d",
+ "bytes": 378931
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "candidate",
+ "plugin": "candidate",
+ "mode": "native",
+ "input": "source UMD",
+ "sha256": "e8193aa8fae3329b3a8e435fc450726d9305e258dddea043ff3114f058516a66",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.41399
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.406802
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.402889
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.905785
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.905718
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.907086
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "published core / published Danmuku: web fullscreen across three player lifetimes",
+ "engine": "firefox",
+ "status": "passed",
+ "browser": "155.0",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "published",
+ "plugin": "published",
+ "mode": "web",
+ "input": "npm 5.3.0",
+ "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 0.74827
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.367701
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.12653
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.74827
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.876225
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.637462
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "published core / published Danmuku: native fullscreen across three player lifetimes",
+ "engine": "firefox",
+ "status": "passed",
+ "browser": "155.0",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "published",
+ "plugin": "published",
+ "mode": "native",
+ "input": "npm 5.3.0",
+ "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1366,
+ "layerWidth": 1366,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.398977
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1366,
+ "layerWidth": 1366,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.418425
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1366,
+ "layerWidth": 1366,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.234932
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false,
+ true,
+ false,
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.87358
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false,
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.91799
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.66854
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "published core / candidate Danmuku: web fullscreen across three player lifetimes",
+ "engine": "firefox",
+ "status": "passed",
+ "browser": "155.0",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "published",
+ "plugin": "candidate",
+ "mode": "web",
+ "input": "source UMD",
+ "sha256": "e8193aa8fae3329b3a8e435fc450726d9305e258dddea043ff3114f058516a66",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.37692
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.388092
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.376764
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.876016
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.863569
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.876484
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "published core / candidate Danmuku: native fullscreen across three player lifetimes",
+ "engine": "firefox",
+ "status": "passed",
+ "browser": "155.0",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "published",
+ "plugin": "candidate",
+ "mode": "native",
+ "input": "source UMD",
+ "sha256": "e8193aa8fae3329b3a8e435fc450726d9305e258dddea043ff3114f058516a66",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1366,
+ "layerWidth": 1366,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.377106
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1366,
+ "layerWidth": 1366,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.153697
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1366,
+ "layerWidth": 1366,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.376948
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false,
+ true,
+ false,
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.876065
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false,
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.625014
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.876241
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "candidate core / published Danmuku: web fullscreen across three player lifetimes",
+ "engine": "firefox",
+ "status": "passed",
+ "browser": "155.0",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d",
+ "bytes": 378931
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "candidate",
+ "plugin": "published",
+ "mode": "web",
+ "input": "npm 5.3.0",
+ "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.391081
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.144986
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.377002
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.906146
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.618796
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.885956
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "candidate core / published Danmuku: native fullscreen across three player lifetimes",
+ "engine": "firefox",
+ "status": "passed",
+ "browser": "155.0",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d",
+ "bytes": 378931
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "candidate",
+ "plugin": "published",
+ "mode": "native",
+ "input": "npm 5.3.0",
+ "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1366,
+ "layerWidth": 1366,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.126219
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1366,
+ "layerWidth": 1366,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.122477
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1366,
+ "layerWidth": 1366,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.40245
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.633298
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.632438
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.917654
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "candidate core / candidate Danmuku: web fullscreen across three player lifetimes",
+ "engine": "firefox",
+ "status": "passed",
+ "browser": "155.0",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d",
+ "bytes": 378931
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "candidate",
+ "plugin": "candidate",
+ "mode": "web",
+ "input": "source UMD",
+ "sha256": "e8193aa8fae3329b3a8e435fc450726d9305e258dddea043ff3114f058516a66",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.168018
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.123495
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 0.674975
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.632239
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.634477
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.634459
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "candidate core / candidate Danmuku: native fullscreen across three player lifetimes",
+ "engine": "firefox",
+ "status": "passed",
+ "browser": "155.0",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d",
+ "bytes": 378931
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "candidate",
+ "plugin": "candidate",
+ "mode": "native",
+ "input": "source UMD",
+ "sha256": "e8193aa8fae3329b3a8e435fc450726d9305e258dddea043ff3114f058516a66",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1366,
+ "layerWidth": 1366,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 0.945494
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1366,
+ "layerWidth": 1366,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.376773
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1366,
+ "layerWidth": 1366,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.396479
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.905076
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.881391
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.870989
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "published core / published Danmuku: web fullscreen across three player lifetimes",
+ "engine": "webkit",
+ "status": "passed",
+ "browser": "26.6",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "published",
+ "plugin": "published",
+ "mode": "web",
+ "input": "npm 5.3.0",
+ "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.4825627
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.3670001
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.4962918
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.9549168
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.8691459
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.9698126
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "published core / published Danmuku: native fullscreen across three player lifetimes",
+ "engine": "webkit",
+ "status": "passed",
+ "browser": "26.6",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "published",
+ "plugin": "published",
+ "mode": "native",
+ "input": "npm 5.3.0",
+ "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.0135209
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.5129377
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.4340418
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false,
+ true,
+ false,
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.9572709
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false,
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 1.0519168
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.9011251
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "published core / candidate Danmuku: web fullscreen across three player lifetimes",
+ "engine": "webkit",
+ "status": "passed",
+ "browser": "26.6",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "published",
+ "plugin": "candidate",
+ "mode": "web",
+ "input": "source UMD",
+ "sha256": "e8193aa8fae3329b3a8e435fc450726d9305e258dddea043ff3114f058516a66",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 0.9459376
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.6052085
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.1644376
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.8739167
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 1.0550418
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 1.0907293
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "published core / candidate Danmuku: native fullscreen across three player lifetimes",
+ "engine": "webkit",
+ "status": "passed",
+ "browser": "26.6",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "published",
+ "plugin": "candidate",
+ "mode": "native",
+ "input": "source UMD",
+ "sha256": "e8193aa8fae3329b3a8e435fc450726d9305e258dddea043ff3114f058516a66",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.7458961
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.5142293
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 0.9927917
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false,
+ true,
+ false,
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 1.2001668
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false,
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.9600418
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.9221459
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "candidate core / published Danmuku: web fullscreen across three player lifetimes",
+ "engine": "webkit",
+ "status": "passed",
+ "browser": "26.6",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d",
+ "bytes": 378931
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "candidate",
+ "plugin": "published",
+ "mode": "web",
+ "input": "npm 5.3.0",
+ "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.5274377
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.4827293
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.5256252
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.9411876
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.9295417
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 1.0027709
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "candidate core / published Danmuku: native fullscreen across three player lifetimes",
+ "engine": "webkit",
+ "status": "passed",
+ "browser": "26.6",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d",
+ "bytes": 378931
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "candidate",
+ "plugin": "published",
+ "mode": "native",
+ "input": "npm 5.3.0",
+ "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.448771
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.5601252
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.0914793
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ },
+ {
+ "replies": 2,
+ "terminated": 1
+ }
+ ]
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.9175
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 1.0274584
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 1.0234167
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "candidate core / candidate Danmuku: web fullscreen across three player lifetimes",
+ "engine": "webkit",
+ "status": "passed",
+ "browser": "26.6",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d",
+ "bytes": 378931
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "candidate",
+ "plugin": "candidate",
+ "mode": "web",
+ "input": "source UMD",
+ "sha256": "e8193aa8fae3329b3a8e435fc450726d9305e258dddea043ff3114f058516a66",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.374396
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.6021877
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.532896
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.8267084
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 1.0507084
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.9721876
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "candidate core / candidate Danmuku: native fullscreen across three player lifetimes",
+ "engine": "webkit",
+ "status": "passed",
+ "browser": "26.6",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d",
+ "bytes": 378931
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "candidate",
+ "plugin": "candidate",
+ "mode": "native",
+ "input": "source UMD",
+ "sha256": "e8193aa8fae3329b3a8e435fc450726d9305e258dddea043ff3114f058516a66",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.426896
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.0215626
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.4615001
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.8908751
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.9617501
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 1.0014168
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "file": "refactor/.cache/danmuku08-fullscreen-main-report/report.json",
+ "sha256": "dbcd90f381efdb1fdf623fc4418852816100a41c8091523d7f00df497e59810b",
+ "stats": {
+ "startTime": "2026-09-14T13:03:37.668Z",
+ "duration": 46458.390999999996,
+ "expected": 12,
+ "skipped": 0,
+ "unexpected": 0,
+ "flaky": 0
+ },
+ "result": {
+ "scope": "source",
+ "exitCode": 0,
+ "signal": null,
+ "args": [
+ "test",
+ "--config=playwright.source.config.js",
+ "test/browser/danmuku-fullscreen.spec.js",
+ "--grep",
+ "candidate Danmuku",
+ "--workers=2"
+ ]
+ },
+ "cases": [
+ {
+ "title": "published core / candidate Danmuku: web fullscreen across three player lifetimes",
+ "engine": "chromium",
+ "status": "passed",
+ "browser": "153.0.8010.12",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "published",
+ "plugin": "candidate",
+ "mode": "web",
+ "input": "D:\\github\\ArtPlayer\\packages\\artplayer-plugin-danmuku\\dist\\artplayer-plugin-danmuku.js",
+ "sha256": "133b7412e1a468b34f4f7ab3779958259f13899e037833029931f02b0833d088",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.309074
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.303309
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.3082
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.818812
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.800969
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.80323
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "published core / candidate Danmuku: native fullscreen across three player lifetimes",
+ "engine": "chromium",
+ "status": "passed",
+ "browser": "153.0.8010.12",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "published",
+ "plugin": "candidate",
+ "mode": "native",
+ "input": "D:\\github\\ArtPlayer\\packages\\artplayer-plugin-danmuku\\dist\\artplayer-plugin-danmuku.js",
+ "sha256": "133b7412e1a468b34f4f7ab3779958259f13899e037833029931f02b0833d088",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.397958
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.415633
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.429601
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false,
+ true,
+ false,
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.907535
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false,
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.921587
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.938983
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "candidate core / candidate Danmuku: web fullscreen across three player lifetimes",
+ "engine": "chromium",
+ "status": "passed",
+ "browser": "153.0.8010.12",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d",
+ "bytes": 378931
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "candidate",
+ "plugin": "candidate",
+ "mode": "web",
+ "input": "D:\\github\\ArtPlayer\\packages\\artplayer-plugin-danmuku\\dist\\artplayer-plugin-danmuku.js",
+ "sha256": "133b7412e1a468b34f4f7ab3779958259f13899e037833029931f02b0833d088",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.331649
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.300204
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.317929
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.81943
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.819931
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.82126
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "candidate core / candidate Danmuku: native fullscreen across three player lifetimes",
+ "engine": "chromium",
+ "status": "passed",
+ "browser": "153.0.8010.12",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d",
+ "bytes": 378931
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "candidate",
+ "plugin": "candidate",
+ "mode": "native",
+ "input": "D:\\github\\ArtPlayer\\packages\\artplayer-plugin-danmuku\\dist\\artplayer-plugin-danmuku.js",
+ "sha256": "133b7412e1a468b34f4f7ab3779958259f13899e037833029931f02b0833d088",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.427215
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.412034
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.315379
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.923654
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.905837
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.805649
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "published core / candidate Danmuku: web fullscreen across three player lifetimes",
+ "engine": "firefox",
+ "status": "passed",
+ "browser": "155.0",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "published",
+ "plugin": "candidate",
+ "mode": "web",
+ "input": "D:\\github\\ArtPlayer\\packages\\artplayer-plugin-danmuku\\dist\\artplayer-plugin-danmuku.js",
+ "sha256": "133b7412e1a468b34f4f7ab3779958259f13899e037833029931f02b0833d088",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 0.785552
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.41373
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 0.594322
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.745308
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.884084
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.594322
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "published core / candidate Danmuku: native fullscreen across three player lifetimes",
+ "engine": "firefox",
+ "status": "passed",
+ "browser": "155.0",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "published",
+ "plugin": "candidate",
+ "mode": "native",
+ "input": "D:\\github\\ArtPlayer\\packages\\artplayer-plugin-danmuku\\dist\\artplayer-plugin-danmuku.js",
+ "sha256": "133b7412e1a468b34f4f7ab3779958259f13899e037833029931f02b0833d088",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1366,
+ "layerWidth": 1366,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 0.918053
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1366,
+ "layerWidth": 1366,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.409679
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1366,
+ "layerWidth": 1366,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.126685
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false,
+ true,
+ false,
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.874856
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false,
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.878721
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.636405
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "candidate core / candidate Danmuku: web fullscreen across three player lifetimes",
+ "engine": "firefox",
+ "status": "passed",
+ "browser": "155.0",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d",
+ "bytes": 378931
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "candidate",
+ "plugin": "candidate",
+ "mode": "web",
+ "input": "D:\\github\\ArtPlayer\\packages\\artplayer-plugin-danmuku\\dist\\artplayer-plugin-danmuku.js",
+ "sha256": "133b7412e1a468b34f4f7ab3779958259f13899e037833029931f02b0833d088",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.199823
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.168249
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.376669
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.669024
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.628843
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.876063
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "candidate core / candidate Danmuku: native fullscreen across three player lifetimes",
+ "engine": "firefox",
+ "status": "passed",
+ "browser": "155.0",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d",
+ "bytes": 378931
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "candidate",
+ "plugin": "candidate",
+ "mode": "native",
+ "input": "D:\\github\\ArtPlayer\\packages\\artplayer-plugin-danmuku\\dist\\artplayer-plugin-danmuku.js",
+ "sha256": "133b7412e1a468b34f4f7ab3779958259f13899e037833029931f02b0833d088",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1366,
+ "layerWidth": 1366,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.376868
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1366,
+ "layerWidth": 1366,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.122723
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1366,
+ "layerWidth": 1366,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.146674
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.876328
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.623445
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.62141
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "published core / candidate Danmuku: web fullscreen across three player lifetimes",
+ "engine": "webkit",
+ "status": "passed",
+ "browser": "26.6",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "published",
+ "plugin": "candidate",
+ "mode": "web",
+ "input": "D:\\github\\ArtPlayer\\packages\\artplayer-plugin-danmuku\\dist\\artplayer-plugin-danmuku.js",
+ "sha256": "133b7412e1a468b34f4f7ab3779958259f13899e037833029931f02b0833d088",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.4654377
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.5799377
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.5899585
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.9305626
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 1.0253542
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 1.0634376
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "published core / candidate Danmuku: native fullscreen across three player lifetimes",
+ "engine": "webkit",
+ "status": "passed",
+ "browser": "26.6",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "published",
+ "plugin": "candidate",
+ "mode": "native",
+ "input": "D:\\github\\ArtPlayer\\packages\\artplayer-plugin-danmuku\\dist\\artplayer-plugin-danmuku.js",
+ "sha256": "133b7412e1a468b34f4f7ab3779958259f13899e037833029931f02b0833d088",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.4849168
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.4642502
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.3802085
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false,
+ true,
+ false,
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.9524793
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false,
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.9569168
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.9214375
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "candidate core / candidate Danmuku: web fullscreen across three player lifetimes",
+ "engine": "webkit",
+ "status": "passed",
+ "browser": "26.6",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d",
+ "bytes": 378931
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "candidate",
+ "plugin": "candidate",
+ "mode": "web",
+ "input": "D:\\github\\ArtPlayer\\packages\\artplayer-plugin-danmuku\\dist\\artplayer-plugin-danmuku.js",
+ "sha256": "133b7412e1a468b34f4f7ab3779958259f13899e037833029931f02b0833d088",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.5095835
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.1336251
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.5649168
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.9874792
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 1.0082918
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 1.0269167
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "candidate core / candidate Danmuku: native fullscreen across three player lifetimes",
+ "engine": "webkit",
+ "status": "passed",
+ "browser": "26.6",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d",
+ "bytes": 378931
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "candidate",
+ "plugin": "candidate",
+ "mode": "native",
+ "input": "D:\\github\\ArtPlayer\\packages\\artplayer-plugin-danmuku\\dist\\artplayer-plugin-danmuku.js",
+ "sha256": "133b7412e1a468b34f4f7ab3779958259f13899e037833029931f02b0833d088",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.4530418
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.6259794
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.4052501
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.9226875
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 1.0997918
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.8838542
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "file": "refactor/.cache/danmuku08-fullscreen-legacy-report/report.json",
+ "sha256": "944b406d192958bb72c45cf70950546b1adfd01e784ea2c37337b578181a0eab",
+ "stats": {
+ "startTime": "2026-09-14T13:04:53.022Z",
+ "duration": 46433.519,
+ "expected": 12,
+ "skipped": 0,
+ "unexpected": 0,
+ "flaky": 0
+ },
+ "result": {
+ "scope": "source",
+ "exitCode": 0,
+ "signal": null,
+ "args": [
+ "test",
+ "--config=playwright.source.config.js",
+ "test/browser/danmuku-fullscreen.spec.js",
+ "--grep",
+ "candidate Danmuku",
+ "--workers=2"
+ ]
+ },
+ "cases": [
+ {
+ "title": "published core / candidate Danmuku: web fullscreen across three player lifetimes",
+ "engine": "chromium",
+ "status": "passed",
+ "browser": "153.0.8010.12",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "published",
+ "plugin": "candidate",
+ "mode": "web",
+ "input": "D:\\github\\ArtPlayer\\packages\\artplayer-plugin-danmuku\\dist\\artplayer-plugin-danmuku.legacy.js",
+ "sha256": "9f0cb9969419a7d0c02d54790c423353b83f775acd95fbdbaeeb29a7fc42c816",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.333472
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.314354
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.301615
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.834443
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.820397
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.805118
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "published core / candidate Danmuku: native fullscreen across three player lifetimes",
+ "engine": "chromium",
+ "status": "passed",
+ "browser": "153.0.8010.12",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "published",
+ "plugin": "candidate",
+ "mode": "native",
+ "input": "D:\\github\\ArtPlayer\\packages\\artplayer-plugin-danmuku\\dist\\artplayer-plugin-danmuku.legacy.js",
+ "sha256": "9f0cb9969419a7d0c02d54790c423353b83f775acd95fbdbaeeb29a7fc42c816",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.42261
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.399858
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.400165
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false,
+ true,
+ false,
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.906674
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false,
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.901131
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.906125
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "candidate core / candidate Danmuku: web fullscreen across three player lifetimes",
+ "engine": "chromium",
+ "status": "passed",
+ "browser": "153.0.8010.12",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d",
+ "bytes": 378931
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "candidate",
+ "plugin": "candidate",
+ "mode": "web",
+ "input": "D:\\github\\ArtPlayer\\packages\\artplayer-plugin-danmuku\\dist\\artplayer-plugin-danmuku.legacy.js",
+ "sha256": "9f0cb9969419a7d0c02d54790c423353b83f775acd95fbdbaeeb29a7fc42c816",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.334278
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.299512
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.301948
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.819864
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.803623
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.805099
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "candidate core / candidate Danmuku: native fullscreen across three player lifetimes",
+ "engine": "chromium",
+ "status": "passed",
+ "browser": "153.0.8010.12",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d",
+ "bytes": 378931
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "candidate",
+ "plugin": "candidate",
+ "mode": "native",
+ "input": "D:\\github\\ArtPlayer\\packages\\artplayer-plugin-danmuku\\dist\\artplayer-plugin-danmuku.legacy.js",
+ "sha256": "9f0cb9969419a7d0c02d54790c423353b83f775acd95fbdbaeeb29a7fc42c816",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.405045
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.416388
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.402219
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.921059
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.905255
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.90534
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "published core / candidate Danmuku: web fullscreen across three player lifetimes",
+ "engine": "firefox",
+ "status": "passed",
+ "browser": "155.0",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "published",
+ "plugin": "candidate",
+ "mode": "web",
+ "input": "D:\\github\\ArtPlayer\\packages\\artplayer-plugin-danmuku\\dist\\artplayer-plugin-danmuku.legacy.js",
+ "sha256": "9f0cb9969419a7d0c02d54790c423353b83f775acd95fbdbaeeb29a7fc42c816",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 0.749553
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.494256
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.167937
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.709227
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.918139
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.628059
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "published core / candidate Danmuku: native fullscreen across three player lifetimes",
+ "engine": "firefox",
+ "status": "passed",
+ "browser": "155.0",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "published",
+ "plugin": "candidate",
+ "mode": "native",
+ "input": "D:\\github\\ArtPlayer\\packages\\artplayer-plugin-danmuku\\dist\\artplayer-plugin-danmuku.legacy.js",
+ "sha256": "9f0cb9969419a7d0c02d54790c423353b83f775acd95fbdbaeeb29a7fc42c816",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1366,
+ "layerWidth": 1366,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.376912
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1366,
+ "layerWidth": 1366,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.151558
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1366,
+ "layerWidth": 1366,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 0.62616
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false,
+ true,
+ false,
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.874997
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false,
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.625716
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.62616
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "candidate core / candidate Danmuku: web fullscreen across three player lifetimes",
+ "engine": "firefox",
+ "status": "passed",
+ "browser": "155.0",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d",
+ "bytes": 378931
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "candidate",
+ "plugin": "candidate",
+ "mode": "web",
+ "input": "D:\\github\\ArtPlayer\\packages\\artplayer-plugin-danmuku\\dist\\artplayer-plugin-danmuku.legacy.js",
+ "sha256": "9f0cb9969419a7d0c02d54790c423353b83f775acd95fbdbaeeb29a7fc42c816",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 0.661996
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.371261
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.126594
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.661996
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.875236
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.625761
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "candidate core / candidate Danmuku: native fullscreen across three player lifetimes",
+ "engine": "firefox",
+ "status": "passed",
+ "browser": "155.0",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d",
+ "bytes": 378931
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "candidate",
+ "plugin": "candidate",
+ "mode": "native",
+ "input": "D:\\github\\ArtPlayer\\packages\\artplayer-plugin-danmuku\\dist\\artplayer-plugin-danmuku.legacy.js",
+ "sha256": "9f0cb9969419a7d0c02d54790c423353b83f775acd95fbdbaeeb29a7fc42c816",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1366,
+ "layerWidth": 1366,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.418162
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1366,
+ "layerWidth": 1366,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.39553
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1366,
+ "layerWidth": 1366,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.122454
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.917699
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.871302
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.624493
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "published core / candidate Danmuku: web fullscreen across three player lifetimes",
+ "engine": "webkit",
+ "status": "passed",
+ "browser": "26.6",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "published",
+ "plugin": "candidate",
+ "mode": "web",
+ "input": "D:\\github\\ArtPlayer\\packages\\artplayer-plugin-danmuku\\dist\\artplayer-plugin-danmuku.legacy.js",
+ "sha256": "9f0cb9969419a7d0c02d54790c423353b83f775acd95fbdbaeeb29a7fc42c816",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 0.9875834
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.5314585
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.5489793
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.92175
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.9166459
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 1.0160209
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "published core / candidate Danmuku: native fullscreen across three player lifetimes",
+ "engine": "webkit",
+ "status": "passed",
+ "browser": "26.6",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "published",
+ "plugin": "candidate",
+ "mode": "native",
+ "input": "D:\\github\\ArtPlayer\\packages\\artplayer-plugin-danmuku\\dist\\artplayer-plugin-danmuku.legacy.js",
+ "sha256": "9f0cb9969419a7d0c02d54790c423353b83f775acd95fbdbaeeb29a7fc42c816",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.4504376
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.3974168
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.6227502
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false,
+ true,
+ false,
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.9038542
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false,
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.8856876
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 1.0803751
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "candidate core / candidate Danmuku: web fullscreen across three player lifetimes",
+ "engine": "webkit",
+ "status": "passed",
+ "browser": "26.6",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d",
+ "bytes": 378931
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "candidate",
+ "plugin": "candidate",
+ "mode": "web",
+ "input": "D:\\github\\ArtPlayer\\packages\\artplayer-plugin-danmuku\\dist\\artplayer-plugin-danmuku.legacy.js",
+ "sha256": "9f0cb9969419a7d0c02d54790c423353b83f775acd95fbdbaeeb29a7fc42c816",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.4887085
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.6131043
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.4870835
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.9386042
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 1.0483543
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 0.9615834
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ },
+ {
+ "title": "candidate core / candidate Danmuku: native fullscreen across three player lifetimes",
+ "engine": "webkit",
+ "status": "passed",
+ "browser": "26.6",
+ "platform": "win32",
+ "coreInput": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d",
+ "bytes": 378931
+ },
+ "errors": [],
+ "fullscreen": {
+ "core": "candidate",
+ "plugin": "candidate",
+ "mode": "native",
+ "input": "D:\\github\\ArtPlayer\\packages\\artplayer-plugin-danmuku\\dist\\artplayer-plugin-danmuku.legacy.js",
+ "sha256": "9f0cb9969419a7d0c02d54790c423353b83f775acd95fbdbaeeb29a7fc42c816",
+ "cycles": [
+ {
+ "cycle": 0,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 0.9312292
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 1,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.5265002
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ },
+ {
+ "cycle": 2,
+ "entered": {
+ "width": 1280,
+ "layerWidth": 1280,
+ "settings": 1,
+ "heatmaps": 1,
+ "time": 1.5664585
+ },
+ "after": {
+ "modes": [
+ true,
+ false
+ ],
+ "errors": [],
+ "roots": 0,
+ "settings": 0,
+ "heatmaps": 0,
+ "styles": 1,
+ "workers": [
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ },
+ {
+ "replies": 1,
+ "terminated": 1
+ }
+ ],
+ "frame": null,
+ "operation": null
+ }
+ }
+ ],
+ "outcome": "three-lifetimes-fullscreen-playback-cleanup-passed",
+ "lifetimes": [
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 0",
+ "time": 0.8616875
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 1",
+ "time": 0.9857501
+ }
+ ],
+ "errors": []
+ },
+ {
+ "modes": [
+ true,
+ false
+ ],
+ "rows": [
+ {
+ "text": "Fullscreen row 2",
+ "time": 1.0397709
+ }
+ ],
+ "errors": []
+ }
+ ]
+ }
+ }
+ ]
+ }
+ ],
+ "limitations": [
+ "Frozen core BASE-LIFE-18 listener callbacks after destroy are observed separately from candidate cleanup.",
+ "Finite lifecycle checks do not prove unbounded heap stability or physical-device support.",
+ "Direct main/legacy bytes are not isolated installed-package distribution acceptance.",
+ "Mask/PiP combined-load performance and remaining old-plugin combinations remain open."
+ ]
+}
diff --git a/refactor/baselines/danmuku-old-core-load-validation.json b/refactor/baselines/danmuku-old-core-load-validation.json
new file mode 100644
index 000000000..e89fc77df
--- /dev/null
+++ b/refactor/baselines/danmuku-old-core-load-validation.json
@@ -0,0 +1,2615 @@
+{
+ "schemaVersion": 1,
+ "task": "PKG-DANMUKU-08",
+ "status": "partial",
+ "capturedAt": "2026-09-14T13:11:13.694Z",
+ "report": {
+ "file": "refactor/.cache/danmuku08-old-core-load-report/report.json",
+ "sha256": "8b7a112b40e198a3b07cb019360103f496a19a0bba4574ac45ec02ecef4aaa5a",
+ "stats": {
+ "startTime": "2026-09-14T13:06:23.381Z",
+ "duration": 277648.803,
+ "expected": 12,
+ "skipped": 0,
+ "unexpected": 0,
+ "flaky": 0
+ },
+ "terminal": {
+ "scope": "source",
+ "exitCode": 0,
+ "signal": null,
+ "args": [
+ "test",
+ "--config=playwright.source.config.js",
+ "test/browser/danmuku-stability.spec.js",
+ "--grep",
+ "published core /",
+ "--workers=2"
+ ]
+ }
+ },
+ "priorCandidateCore": {
+ "file": "refactor/baselines/danmuku-stability-validation.json",
+ "sha256": "ad5d47e29a9c56f225daa3642e045f15bbd51799b46d01776825de7c18ba3e44",
+ "capturedAt": "2026-09-13T15:15:04.455Z",
+ "report": {
+ "file": "refactor/.cache/danmuku07-stability-final.json",
+ "sha256": "474aa2aa3b0fa8f5700307db9a05d2253e15ab3d90f7cd2a1434c1b5ff131bc8"
+ }
+ },
+ "loads": [
+ {
+ "engine": "chromium",
+ "browser": "153.0.8010.12",
+ "core": "published",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "implementation": "published",
+ "rowsPerSecond": 2,
+ "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f",
+ "cycles": [
+ {
+ "cycle": 0,
+ "base": 0.396066,
+ "startWall": 674.8999999761581,
+ "endWall": 14824.599999964237,
+ "time": 14.49932,
+ "decodedWidth": 640,
+ "visibleCount": 24,
+ "uniqueVisible": 24,
+ "missedSampling": [],
+ "sampledNotVisible": [],
+ "queue": 24,
+ "states": {
+ "wait": 24,
+ "ready": 0,
+ "emit": 0,
+ "stop": 0
+ },
+ "nodes": 4,
+ "pooled": 3,
+ "uniquePool": 3,
+ "referenced": 0,
+ "distinctReferences": 0,
+ "uniqueStateMembers": 24,
+ "validStateMembers": true,
+ "heap": {
+ "used": 10000000,
+ "total": 10000000
+ },
+ "scheduledRows": 24,
+ "framesWallMs": {
+ "count": 845,
+ "median": 16.699999999999818,
+ "p95": 16.700000000000728,
+ "max": 16.80000000000109,
+ "over50ms": 0
+ }
+ },
+ {
+ "cycle": 1,
+ "base": 14.49932,
+ "startWall": 14834.899999976158,
+ "endWall": 29034.899999976158,
+ "time": 28.647302,
+ "decodedWidth": 640,
+ "visibleCount": 24,
+ "uniqueVisible": 24,
+ "missedSampling": [],
+ "sampledNotVisible": [],
+ "queue": 48,
+ "states": {
+ "wait": 48,
+ "ready": 0,
+ "emit": 0,
+ "stop": 0
+ },
+ "nodes": 5,
+ "pooled": 3,
+ "uniquePool": 3,
+ "referenced": 0,
+ "distinctReferences": 0,
+ "uniqueStateMembers": 48,
+ "validStateMembers": true,
+ "heap": {
+ "used": 10000000,
+ "total": 10000000
+ },
+ "scheduledRows": 24,
+ "framesWallMs": {
+ "count": 848,
+ "median": 16.69999999999891,
+ "p95": 16.700000000000728,
+ "max": 16.80000000000291,
+ "over50ms": 0
+ }
+ },
+ {
+ "cycle": 2,
+ "base": 28.647302,
+ "startWall": 29043.299999952316,
+ "endWall": 43221.299999952316,
+ "time": 42.780747,
+ "decodedWidth": 640,
+ "visibleCount": 24,
+ "uniqueVisible": 24,
+ "missedSampling": [],
+ "sampledNotVisible": [],
+ "queue": 72,
+ "states": {
+ "wait": 72,
+ "ready": 0,
+ "emit": 0,
+ "stop": 0
+ },
+ "nodes": 6,
+ "pooled": 3,
+ "uniquePool": 3,
+ "referenced": 0,
+ "distinctReferences": 0,
+ "uniqueStateMembers": 72,
+ "validStateMembers": true,
+ "heap": {
+ "used": 10000000,
+ "total": 10000000
+ },
+ "scheduledRows": 24,
+ "framesWallMs": {
+ "count": 846,
+ "median": 16.69999999999709,
+ "p95": 16.700000000004366,
+ "max": 16.80000000000291,
+ "over50ms": 0
+ }
+ }
+ ],
+ "sampleGapsIncludingLifecyclePauses": {
+ "framesWallMs": {
+ "count": 2541,
+ "median": 16.69999999999709,
+ "p95": 16.700000000004366,
+ "max": 83.39999999999964,
+ "over50ms": 2
+ }
+ },
+ "workers": [
+ {
+ "posts": 75,
+ "replies": 75,
+ "terminated": 1,
+ "errors": []
+ }
+ ],
+ "allocations": 6,
+ "reuses": 69,
+ "visibleCount": 72,
+ "recycledCount": 72,
+ "destroyed": true,
+ "retainedPlayerRoots": 0,
+ "priorCandidateCore": {
+ "sampleGapsIncludingLifecyclePauses": {
+ "framesWallMs": {
+ "count": 2538,
+ "p50": 16.69999999999709,
+ "p95": 16.700000000004366,
+ "max": 66.70000000000073
+ },
+ "framesMediaSeconds": {
+ "count": 2538,
+ "p50": 0.016670000000004848,
+ "p95": 0.018145000000000522,
+ "max": 0.05940100000000115
+ },
+ "samplingWallMs": {
+ "count": 2607,
+ "p50": 16.69999998807907,
+ "p95": 17.80000001192093,
+ "max": 83.90000003576279
+ },
+ "samplingMediaSeconds": {
+ "count": 2607,
+ "p50": 0.016633999999999816,
+ "p95": 0.018132999999999733,
+ "max": 0.0597139999999996
+ }
+ },
+ "cycles": [
+ {
+ "cycle": 0,
+ "visibleCount": 24,
+ "nodes": 4,
+ "framesWallMs": {
+ "count": 846,
+ "p50": 16.699999999999818,
+ "p95": 16.799999999999272,
+ "max": 16.80000000000109
+ }
+ },
+ {
+ "cycle": 1,
+ "visibleCount": 24,
+ "nodes": 5,
+ "framesWallMs": {
+ "count": 846,
+ "p50": 16.69999999999891,
+ "p95": 16.700000000000728,
+ "max": 16.80000000000291
+ }
+ },
+ {
+ "cycle": 2,
+ "visibleCount": 24,
+ "nodes": 6,
+ "framesWallMs": {
+ "count": 846,
+ "p50": 16.69999999999709,
+ "p95": 16.799999999995634,
+ "max": 16.80000000000291
+ }
+ }
+ ]
+ }
+ },
+ {
+ "engine": "chromium",
+ "browser": "153.0.8010.12",
+ "core": "published",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "implementation": "published",
+ "rowsPerSecond": 20,
+ "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f",
+ "cycles": [
+ {
+ "cycle": 0,
+ "base": 0.387278,
+ "startWall": 611.6999999880791,
+ "endWall": 14795.399999976158,
+ "time": 14.5286,
+ "decodedWidth": 640,
+ "visibleCount": 240,
+ "uniqueVisible": 240,
+ "missedSampling": [],
+ "sampledNotVisible": [],
+ "queue": 240,
+ "states": {
+ "wait": 240,
+ "ready": 0,
+ "emit": 0,
+ "stop": 0
+ },
+ "nodes": 22,
+ "pooled": 21,
+ "uniquePool": 21,
+ "referenced": 0,
+ "distinctReferences": 0,
+ "uniqueStateMembers": 240,
+ "validStateMembers": true,
+ "heap": {
+ "used": 10000000,
+ "total": 10000000
+ },
+ "scheduledRows": 240,
+ "framesWallMs": {
+ "count": 847,
+ "median": 16.699999999999818,
+ "p95": 16.799999999999272,
+ "max": 16.80000000000109,
+ "over50ms": 0
+ }
+ },
+ {
+ "cycle": 1,
+ "base": 14.5286,
+ "startWall": 14814.099999964237,
+ "endWall": 28977.099999964237,
+ "time": 28.654217,
+ "decodedWidth": 640,
+ "visibleCount": 240,
+ "uniqueVisible": 240,
+ "missedSampling": [],
+ "sampledNotVisible": [],
+ "queue": 480,
+ "states": {
+ "wait": 480,
+ "ready": 0,
+ "emit": 0,
+ "stop": 0
+ },
+ "nodes": 23,
+ "pooled": 21,
+ "uniquePool": 21,
+ "referenced": 0,
+ "distinctReferences": 0,
+ "uniqueStateMembers": 480,
+ "validStateMembers": true,
+ "heap": {
+ "used": 10000000,
+ "total": 10000000
+ },
+ "scheduledRows": 240,
+ "framesWallMs": {
+ "count": 846,
+ "median": 16.69999999999891,
+ "p95": 16.700000000000728,
+ "max": 16.80000000000291,
+ "over50ms": 0
+ }
+ },
+ {
+ "cycle": 2,
+ "base": 28.654217,
+ "startWall": 28993.899999976158,
+ "endWall": 43130.30000001192,
+ "time": 42.746851,
+ "decodedWidth": 640,
+ "visibleCount": 240,
+ "uniqueVisible": 240,
+ "missedSampling": [],
+ "sampledNotVisible": [],
+ "queue": 720,
+ "states": {
+ "wait": 720,
+ "ready": 0,
+ "emit": 0,
+ "stop": 0
+ },
+ "nodes": 24,
+ "pooled": 21,
+ "uniquePool": 21,
+ "referenced": 0,
+ "distinctReferences": 0,
+ "uniqueStateMembers": 720,
+ "validStateMembers": true,
+ "heap": {
+ "used": 10000000,
+ "total": 10000000
+ },
+ "scheduledRows": 240,
+ "framesWallMs": {
+ "count": 844,
+ "median": 16.69999999999709,
+ "p95": 16.799999999995634,
+ "max": 16.80000000000291,
+ "over50ms": 0
+ }
+ }
+ ],
+ "sampleGapsIncludingLifecyclePauses": {
+ "framesWallMs": {
+ "count": 2539,
+ "median": 16.69999999999709,
+ "p95": 16.799999999995634,
+ "max": 83.29999999999927,
+ "over50ms": 2
+ }
+ },
+ "workers": [
+ {
+ "posts": 723,
+ "replies": 723,
+ "terminated": 1,
+ "errors": []
+ }
+ ],
+ "allocations": 24,
+ "reuses": 699,
+ "visibleCount": 720,
+ "recycledCount": 720,
+ "destroyed": true,
+ "retainedPlayerRoots": 0,
+ "priorCandidateCore": {
+ "sampleGapsIncludingLifecyclePauses": {
+ "framesWallMs": {
+ "count": 2536,
+ "p50": 16.69999999999709,
+ "p95": 16.700000000004366,
+ "max": 83.40000000000146
+ },
+ "framesMediaSeconds": {
+ "count": 2536,
+ "p50": 0.016664000000002233,
+ "p95": 0.018217999999997403,
+ "max": 0.07596999999999987
+ },
+ "samplingWallMs": {
+ "count": 2603,
+ "p50": 16.600000023841858,
+ "p95": 17.80000001192093,
+ "max": 99.30000001192093
+ },
+ "samplingMediaSeconds": {
+ "count": 2603,
+ "p50": 0.016636000000005424,
+ "p95": 0.018202999999999747,
+ "max": 0.07654499999999942
+ }
+ },
+ "cycles": [
+ {
+ "cycle": 0,
+ "visibleCount": 240,
+ "nodes": 22,
+ "framesWallMs": {
+ "count": 845,
+ "p50": 16.699999999999818,
+ "p95": 16.700000000000728,
+ "max": 16.80000000000109
+ }
+ },
+ {
+ "cycle": 1,
+ "visibleCount": 240,
+ "nodes": 23,
+ "framesWallMs": {
+ "count": 846,
+ "p50": 16.69999999999891,
+ "p95": 16.799999999999272,
+ "max": 16.80000000000291
+ }
+ },
+ {
+ "cycle": 2,
+ "visibleCount": 240,
+ "nodes": 24,
+ "framesWallMs": {
+ "count": 845,
+ "p50": 16.69999999999709,
+ "p95": 16.700000000004366,
+ "max": 16.80000000000291
+ }
+ }
+ ]
+ }
+ },
+ {
+ "engine": "chromium",
+ "browser": "153.0.8010.12",
+ "core": "published",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "implementation": "candidate",
+ "rowsPerSecond": 2,
+ "sha256": "e8193aa8fae3329b3a8e435fc450726d9305e258dddea043ff3114f058516a66",
+ "cycles": [
+ {
+ "cycle": 0,
+ "base": 0.383037,
+ "startWall": 669.0999999642372,
+ "endWall": 14869.899999976158,
+ "time": 14.549167,
+ "decodedWidth": 640,
+ "visibleCount": 24,
+ "uniqueVisible": 24,
+ "missedSampling": [],
+ "sampledNotVisible": [],
+ "queue": 24,
+ "states": {
+ "wait": 24,
+ "ready": 0,
+ "emit": 0,
+ "stop": 0
+ },
+ "nodes": 3,
+ "pooled": 3,
+ "uniquePool": 3,
+ "referenced": 0,
+ "distinctReferences": 0,
+ "uniqueStateMembers": 24,
+ "validStateMembers": true,
+ "heap": {
+ "used": 10000000,
+ "total": 10000000
+ },
+ "scheduledRows": 24,
+ "framesWallMs": {
+ "count": 848,
+ "median": 16.699999999999818,
+ "p95": 16.799999999999272,
+ "max": 16.80000000000109,
+ "over50ms": 0
+ }
+ },
+ {
+ "cycle": 1,
+ "base": 14.549167,
+ "startWall": 14883.199999988079,
+ "endWall": 29032.5,
+ "time": 28.658288,
+ "decodedWidth": 640,
+ "visibleCount": 24,
+ "uniqueVisible": 24,
+ "missedSampling": [],
+ "sampledNotVisible": [],
+ "queue": 48,
+ "states": {
+ "wait": 48,
+ "ready": 0,
+ "emit": 0,
+ "stop": 0
+ },
+ "nodes": 3,
+ "pooled": 3,
+ "uniquePool": 3,
+ "referenced": 0,
+ "distinctReferences": 0,
+ "uniqueStateMembers": 48,
+ "validStateMembers": true,
+ "heap": {
+ "used": 10000000,
+ "total": 10000000
+ },
+ "scheduledRows": 24,
+ "framesWallMs": {
+ "count": 845,
+ "median": 16.69999999999891,
+ "p95": 16.799999999999272,
+ "max": 16.80000000000291,
+ "over50ms": 0
+ }
+ },
+ {
+ "cycle": 2,
+ "base": 28.658288,
+ "startWall": 29043.099999964237,
+ "endWall": 43219.5,
+ "time": 42.780468,
+ "decodedWidth": 640,
+ "visibleCount": 24,
+ "uniqueVisible": 24,
+ "missedSampling": [],
+ "sampledNotVisible": [],
+ "queue": 72,
+ "states": {
+ "wait": 72,
+ "ready": 0,
+ "emit": 0,
+ "stop": 0
+ },
+ "nodes": 3,
+ "pooled": 3,
+ "uniquePool": 3,
+ "referenced": 0,
+ "distinctReferences": 0,
+ "uniqueStateMembers": 72,
+ "validStateMembers": true,
+ "heap": {
+ "used": 10000000,
+ "total": 10000000
+ },
+ "scheduledRows": 24,
+ "framesWallMs": {
+ "count": 846,
+ "median": 16.69999999999709,
+ "p95": 16.700000000004366,
+ "max": 16.80000000000291,
+ "over50ms": 0
+ }
+ }
+ ],
+ "sampleGapsIncludingLifecyclePauses": {
+ "framesWallMs": {
+ "count": 2541,
+ "median": 16.69999999999709,
+ "p95": 16.700000000004366,
+ "max": 83.30000000000109,
+ "over50ms": 2
+ }
+ },
+ "workers": [
+ {
+ "posts": 72,
+ "replies": 72,
+ "terminated": 1,
+ "errors": []
+ }
+ ],
+ "allocations": 3,
+ "reuses": 69,
+ "visibleCount": 72,
+ "recycledCount": 72,
+ "destroyed": true,
+ "retainedPlayerRoots": 0,
+ "priorCandidateCore": {
+ "sampleGapsIncludingLifecyclePauses": {
+ "framesWallMs": {
+ "count": 2539,
+ "p50": 16.69999999999709,
+ "p95": 16.700000000004366,
+ "max": 66.70000000000073
+ },
+ "framesMediaSeconds": {
+ "count": 2539,
+ "p50": 0.016674000000001854,
+ "p95": 0.018076000000000647,
+ "max": 0.061954999999999316
+ },
+ "samplingWallMs": {
+ "count": 2536,
+ "p50": 16.69999998807907,
+ "p95": 17.899999976158142,
+ "max": 83.09999996423721
+ },
+ "samplingMediaSeconds": {
+ "count": 2536,
+ "p50": 0.016676000000000357,
+ "p95": 0.018077999999995598,
+ "max": 0.0623389999999997
+ }
+ },
+ "cycles": [
+ {
+ "cycle": 0,
+ "visibleCount": 24,
+ "nodes": 3,
+ "framesWallMs": {
+ "count": 847,
+ "p50": 16.699999999999818,
+ "p95": 16.700000000000728,
+ "max": 16.80000000000109
+ }
+ },
+ {
+ "cycle": 1,
+ "visibleCount": 24,
+ "nodes": 3,
+ "framesWallMs": {
+ "count": 845,
+ "p50": 16.69999999999891,
+ "p95": 16.799999999999272,
+ "max": 16.80000000000291
+ }
+ },
+ {
+ "cycle": 2,
+ "visibleCount": 24,
+ "nodes": 3,
+ "framesWallMs": {
+ "count": 847,
+ "p50": 16.69999999999709,
+ "p95": 16.700000000004366,
+ "max": 16.80000000000291
+ }
+ }
+ ]
+ }
+ },
+ {
+ "engine": "chromium",
+ "browser": "153.0.8010.12",
+ "core": "published",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "implementation": "candidate",
+ "rowsPerSecond": 20,
+ "sha256": "e8193aa8fae3329b3a8e435fc450726d9305e258dddea043ff3114f058516a66",
+ "cycles": [
+ {
+ "cycle": 0,
+ "base": 0.386325,
+ "startWall": 612.1000000238419,
+ "endWall": 14774.900000035763,
+ "time": 14.510204,
+ "decodedWidth": 640,
+ "visibleCount": 240,
+ "uniqueVisible": 240,
+ "missedSampling": [],
+ "sampledNotVisible": [],
+ "queue": 240,
+ "states": {
+ "wait": 240,
+ "ready": 0,
+ "emit": 0,
+ "stop": 0
+ },
+ "nodes": 21,
+ "pooled": 21,
+ "uniquePool": 21,
+ "referenced": 0,
+ "distinctReferences": 0,
+ "uniqueStateMembers": 240,
+ "validStateMembers": true,
+ "heap": {
+ "used": 10000000,
+ "total": 10000000
+ },
+ "scheduledRows": 240,
+ "framesWallMs": {
+ "count": 846,
+ "median": 16.699999999999818,
+ "p95": 16.700000000000728,
+ "max": 16.80000000000109,
+ "over50ms": 0
+ }
+ },
+ {
+ "cycle": 1,
+ "base": 14.510204,
+ "startWall": 14793.100000023842,
+ "endWall": 28963.200000047684,
+ "time": 28.635695,
+ "decodedWidth": 640,
+ "visibleCount": 240,
+ "uniqueVisible": 240,
+ "missedSampling": [],
+ "sampledNotVisible": [],
+ "queue": 480,
+ "states": {
+ "wait": 480,
+ "ready": 0,
+ "emit": 0,
+ "stop": 0
+ },
+ "nodes": 21,
+ "pooled": 21,
+ "uniquePool": 21,
+ "referenced": 0,
+ "distinctReferences": 0,
+ "uniqueStateMembers": 480,
+ "validStateMembers": true,
+ "heap": {
+ "used": 10000000,
+ "total": 10000000
+ },
+ "scheduledRows": 240,
+ "framesWallMs": {
+ "count": 846,
+ "median": 16.69999999999891,
+ "p95": 16.700000000000728,
+ "max": 16.80000000000291,
+ "over50ms": 0
+ }
+ },
+ {
+ "cycle": 2,
+ "base": 28.635695,
+ "startWall": 28980.100000023842,
+ "endWall": 43133.40000003576,
+ "time": 42.744427,
+ "decodedWidth": 640,
+ "visibleCount": 240,
+ "uniqueVisible": 240,
+ "missedSampling": [],
+ "sampledNotVisible": [],
+ "queue": 720,
+ "states": {
+ "wait": 720,
+ "ready": 0,
+ "emit": 0,
+ "stop": 0
+ },
+ "nodes": 21,
+ "pooled": 21,
+ "uniquePool": 21,
+ "referenced": 0,
+ "distinctReferences": 0,
+ "uniqueStateMembers": 720,
+ "validStateMembers": true,
+ "heap": {
+ "used": 10000000,
+ "total": 10000000
+ },
+ "scheduledRows": 240,
+ "framesWallMs": {
+ "count": 845,
+ "median": 16.69999999999709,
+ "p95": 16.799999999995634,
+ "max": 16.80000000000291,
+ "over50ms": 0
+ }
+ }
+ ],
+ "sampleGapsIncludingLifecyclePauses": {
+ "framesWallMs": {
+ "count": 2539,
+ "median": 16.69999999999709,
+ "p95": 16.799999999995634,
+ "max": 83.39999999999964,
+ "over50ms": 2
+ }
+ },
+ "workers": [
+ {
+ "posts": 720,
+ "replies": 720,
+ "terminated": 1,
+ "errors": []
+ }
+ ],
+ "allocations": 21,
+ "reuses": 699,
+ "visibleCount": 720,
+ "recycledCount": 720,
+ "destroyed": true,
+ "retainedPlayerRoots": 0,
+ "priorCandidateCore": {
+ "sampleGapsIncludingLifecyclePauses": {
+ "framesWallMs": {
+ "count": 2540,
+ "p50": 16.69999999999709,
+ "p95": 16.700000000004366,
+ "max": 83.40000000000146
+ },
+ "framesMediaSeconds": {
+ "count": 2540,
+ "p50": 0.01668199999999942,
+ "p95": 0.0182399999999987,
+ "max": 0.06178000000000239
+ },
+ "samplingWallMs": {
+ "count": 2537,
+ "p50": 16.69999998807907,
+ "p95": 17.80000001192093,
+ "max": 100.40000003576279
+ },
+ "samplingMediaSeconds": {
+ "count": 2537,
+ "p50": 0.016683999999997923,
+ "p95": 0.0182399999999987,
+ "max": 0.06213999999999942
+ }
+ },
+ "cycles": [
+ {
+ "cycle": 0,
+ "visibleCount": 240,
+ "nodes": 21,
+ "framesWallMs": {
+ "count": 847,
+ "p50": 16.699999999999818,
+ "p95": 16.700000000000728,
+ "max": 16.80000000000109
+ }
+ },
+ {
+ "cycle": 1,
+ "visibleCount": 240,
+ "nodes": 21,
+ "framesWallMs": {
+ "count": 847,
+ "p50": 16.69999999999891,
+ "p95": 16.700000000000728,
+ "max": 16.80000000000291
+ }
+ },
+ {
+ "cycle": 2,
+ "visibleCount": 240,
+ "nodes": 21,
+ "framesWallMs": {
+ "count": 846,
+ "p50": 16.69999999999709,
+ "p95": 16.799999999995634,
+ "max": 16.80000000000291
+ }
+ }
+ ]
+ }
+ },
+ {
+ "engine": "firefox",
+ "browser": "155.0",
+ "core": "published",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "implementation": "published",
+ "rowsPerSecond": 2,
+ "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f",
+ "cycles": [
+ {
+ "cycle": 0,
+ "base": 0.174442,
+ "startWall": 867,
+ "endWall": 15272,
+ "time": 14.415827,
+ "decodedWidth": 640,
+ "visibleCount": 24,
+ "uniqueVisible": 24,
+ "missedSampling": [],
+ "sampledNotVisible": [],
+ "queue": 24,
+ "states": {
+ "wait": 24,
+ "ready": 0,
+ "emit": 0,
+ "stop": 0
+ },
+ "nodes": 4,
+ "pooled": 3,
+ "uniquePool": 3,
+ "referenced": 0,
+ "distinctReferences": 0,
+ "uniqueStateMembers": 24,
+ "validStateMembers": true,
+ "heap": null,
+ "scheduledRows": 24,
+ "framesWallMs": {
+ "count": 853,
+ "median": 16.659999999999854,
+ "p95": 16.68000000000029,
+ "max": 18.82000000000062,
+ "over50ms": 0
+ }
+ },
+ {
+ "cycle": 1,
+ "base": 14.415827,
+ "startWall": 15285,
+ "endWall": 29519,
+ "time": 28.603541,
+ "decodedWidth": 640,
+ "visibleCount": 24,
+ "uniqueVisible": 24,
+ "missedSampling": [],
+ "sampledNotVisible": [],
+ "queue": 48,
+ "states": {
+ "wait": 48,
+ "ready": 0,
+ "emit": 0,
+ "stop": 0
+ },
+ "nodes": 5,
+ "pooled": 3,
+ "uniquePool": 3,
+ "referenced": 0,
+ "distinctReferences": 0,
+ "uniqueStateMembers": 48,
+ "validStateMembers": true,
+ "heap": null,
+ "scheduledRows": 24,
+ "framesWallMs": {
+ "count": 848,
+ "median": 16.659999999999854,
+ "p95": 16.68000000000029,
+ "max": 21.31999999999971,
+ "over50ms": 0
+ }
+ },
+ {
+ "cycle": 2,
+ "base": 28.603541,
+ "startWall": 29530,
+ "endWall": 43743,
+ "time": 42.735574,
+ "decodedWidth": 640,
+ "visibleCount": 24,
+ "uniqueVisible": 24,
+ "missedSampling": [],
+ "sampledNotVisible": [],
+ "queue": 72,
+ "states": {
+ "wait": 72,
+ "ready": 0,
+ "emit": 0,
+ "stop": 0
+ },
+ "nodes": 6,
+ "pooled": 3,
+ "uniquePool": 3,
+ "referenced": 0,
+ "distinctReferences": 0,
+ "uniqueStateMembers": 72,
+ "validStateMembers": true,
+ "heap": null,
+ "scheduledRows": 24,
+ "framesWallMs": {
+ "count": 847,
+ "median": 16.660000000003492,
+ "p95": 16.68000000000029,
+ "max": 23.760000000002037,
+ "over50ms": 0
+ }
+ }
+ ],
+ "sampleGapsIncludingLifecyclePauses": {
+ "framesWallMs": {
+ "count": 2550,
+ "median": 16.659999999999854,
+ "p95": 16.68000000000029,
+ "max": 102,
+ "over50ms": 2
+ }
+ },
+ "workers": [
+ {
+ "posts": 75,
+ "replies": 75,
+ "terminated": 1,
+ "errors": []
+ }
+ ],
+ "allocations": 6,
+ "reuses": 69,
+ "visibleCount": 72,
+ "recycledCount": 72,
+ "destroyed": true,
+ "retainedPlayerRoots": 0,
+ "priorCandidateCore": {
+ "sampleGapsIncludingLifecyclePauses": {
+ "framesWallMs": {
+ "count": 2551,
+ "p50": 16.659999999999854,
+ "p95": 16.68000000000029,
+ "max": 100
+ },
+ "framesMediaSeconds": {
+ "count": 2551,
+ "p50": 0,
+ "p95": 0.041733000000000686,
+ "max": 0.04536300000000182
+ },
+ "samplingWallMs": {
+ "count": 2624,
+ "p50": 17,
+ "p95": 18,
+ "max": 101
+ },
+ "samplingMediaSeconds": {
+ "count": 2624,
+ "p50": 0,
+ "p95": 0.041701999999999906,
+ "max": 0.04536300000000182
+ }
+ },
+ "cycles": [
+ {
+ "cycle": 0,
+ "visibleCount": 24,
+ "nodes": 4,
+ "framesWallMs": {
+ "count": 848,
+ "p50": 16.659999999999854,
+ "p95": 16.68000000000029,
+ "max": 21.579999999999927
+ }
+ },
+ {
+ "cycle": 1,
+ "visibleCount": 24,
+ "nodes": 5,
+ "framesWallMs": {
+ "count": 852,
+ "p50": 16.659999999999854,
+ "p95": 16.68000000000029,
+ "max": 20.720000000001164
+ }
+ },
+ {
+ "cycle": 2,
+ "visibleCount": 24,
+ "nodes": 6,
+ "framesWallMs": {
+ "count": 851,
+ "p50": 16.660000000003492,
+ "p95": 16.68000000000029,
+ "max": 19.81999999999971
+ }
+ }
+ ]
+ }
+ },
+ {
+ "engine": "firefox",
+ "browser": "155.0",
+ "core": "published",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "implementation": "published",
+ "rowsPerSecond": 20,
+ "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f",
+ "cycles": [
+ {
+ "cycle": 0,
+ "base": 0.42283,
+ "startWall": 758,
+ "endWall": 15141,
+ "time": 14.734858,
+ "decodedWidth": 640,
+ "visibleCount": 240,
+ "uniqueVisible": 240,
+ "missedSampling": [],
+ "sampledNotVisible": [],
+ "queue": 240,
+ "states": {
+ "wait": 240,
+ "ready": 0,
+ "emit": 0,
+ "stop": 0
+ },
+ "nodes": 23,
+ "pooled": 22,
+ "uniquePool": 22,
+ "referenced": 0,
+ "distinctReferences": 0,
+ "uniqueStateMembers": 240,
+ "validStateMembers": true,
+ "heap": null,
+ "scheduledRows": 240,
+ "framesWallMs": {
+ "count": 857,
+ "median": 16.659999999999854,
+ "p95": 16.68000000000029,
+ "max": 29.240000000000236,
+ "over50ms": 0
+ }
+ },
+ {
+ "cycle": 1,
+ "base": 14.734858,
+ "startWall": 15160,
+ "endWall": 29380,
+ "time": 28.881762,
+ "decodedWidth": 640,
+ "visibleCount": 240,
+ "uniqueVisible": 240,
+ "missedSampling": [],
+ "sampledNotVisible": [],
+ "queue": 480,
+ "states": {
+ "wait": 480,
+ "ready": 0,
+ "emit": 0,
+ "stop": 0
+ },
+ "nodes": 24,
+ "pooled": 22,
+ "uniquePool": 22,
+ "referenced": 0,
+ "distinctReferences": 0,
+ "uniqueStateMembers": 480,
+ "validStateMembers": true,
+ "heap": null,
+ "scheduledRows": 240,
+ "framesWallMs": {
+ "count": 846,
+ "median": 16.659999999999854,
+ "p95": 16.68000000000029,
+ "max": 28.460000000002765,
+ "over50ms": 0
+ }
+ },
+ {
+ "cycle": 2,
+ "base": 28.881762,
+ "startWall": 29397,
+ "endWall": 43624,
+ "time": 43.024992,
+ "decodedWidth": 640,
+ "visibleCount": 240,
+ "uniqueVisible": 240,
+ "missedSampling": [],
+ "sampledNotVisible": [],
+ "queue": 720,
+ "states": {
+ "wait": 720,
+ "ready": 0,
+ "emit": 0,
+ "stop": 0
+ },
+ "nodes": 25,
+ "pooled": 22,
+ "uniquePool": 22,
+ "referenced": 0,
+ "distinctReferences": 0,
+ "uniqueStateMembers": 720,
+ "validStateMembers": true,
+ "heap": null,
+ "scheduledRows": 240,
+ "framesWallMs": {
+ "count": 848,
+ "median": 16.660000000003492,
+ "p95": 16.68000000000029,
+ "max": 21.959999999999127,
+ "over50ms": 0
+ }
+ }
+ ],
+ "sampleGapsIncludingLifecyclePauses": {
+ "framesWallMs": {
+ "count": 2553,
+ "median": 16.659999999999854,
+ "p95": 16.68000000000029,
+ "max": 116.68000000000029,
+ "over50ms": 2
+ }
+ },
+ "workers": [
+ {
+ "posts": 723,
+ "replies": 723,
+ "terminated": 1,
+ "errors": []
+ }
+ ],
+ "allocations": 25,
+ "reuses": 698,
+ "visibleCount": 720,
+ "recycledCount": 720,
+ "destroyed": true,
+ "retainedPlayerRoots": 0,
+ "priorCandidateCore": {
+ "sampleGapsIncludingLifecyclePauses": {
+ "framesWallMs": {
+ "count": 2557,
+ "p50": 16.659999999999854,
+ "p95": 16.68000000000029,
+ "max": 116.67999999999665
+ },
+ "framesMediaSeconds": {
+ "count": 2557,
+ "p50": 0,
+ "p95": 0.04180399999999995,
+ "max": 0.04524600000000012
+ },
+ "samplingWallMs": {
+ "count": 2631,
+ "p50": 17,
+ "p95": 18,
+ "max": 116
+ },
+ "samplingMediaSeconds": {
+ "count": 2631,
+ "p50": 0,
+ "p95": 0.04177699999999618,
+ "max": 0.04524600000000012
+ }
+ },
+ "cycles": [
+ {
+ "cycle": 0,
+ "visibleCount": 240,
+ "nodes": 23,
+ "framesWallMs": {
+ "count": 856,
+ "p50": 16.659999999999854,
+ "p95": 16.68000000000029,
+ "max": 20.699999999999818
+ }
+ },
+ {
+ "cycle": 1,
+ "visibleCount": 240,
+ "nodes": 24,
+ "framesWallMs": {
+ "count": 850,
+ "p50": 16.659999999999854,
+ "p95": 16.68000000000029,
+ "max": 20.979999999999563
+ }
+ },
+ {
+ "cycle": 2,
+ "visibleCount": 240,
+ "nodes": 24,
+ "framesWallMs": {
+ "count": 851,
+ "p50": 16.660000000003492,
+ "p95": 16.68000000000029,
+ "max": 18.860000000000582
+ }
+ }
+ ]
+ }
+ },
+ {
+ "engine": "firefox",
+ "browser": "155.0",
+ "core": "published",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "implementation": "candidate",
+ "rowsPerSecond": 2,
+ "sha256": "e8193aa8fae3329b3a8e435fc450726d9305e258dddea043ff3114f058516a66",
+ "cycles": [
+ {
+ "cycle": 0,
+ "base": 0.178512,
+ "startWall": 884,
+ "endWall": 15150,
+ "time": 14.329136,
+ "decodedWidth": 640,
+ "visibleCount": 24,
+ "uniqueVisible": 24,
+ "missedSampling": [],
+ "sampledNotVisible": [],
+ "queue": 24,
+ "states": {
+ "wait": 24,
+ "ready": 0,
+ "emit": 0,
+ "stop": 0
+ },
+ "nodes": 3,
+ "pooled": 3,
+ "uniquePool": 3,
+ "referenced": 0,
+ "distinctReferences": 0,
+ "uniqueStateMembers": 24,
+ "validStateMembers": true,
+ "heap": null,
+ "scheduledRows": 24,
+ "framesWallMs": {
+ "count": 848,
+ "median": 16.659999999999854,
+ "p95": 16.68000000000029,
+ "max": 19,
+ "over50ms": 0
+ }
+ },
+ {
+ "cycle": 1,
+ "base": 14.329136,
+ "startWall": 15165,
+ "endWall": 29428,
+ "time": 28.519722,
+ "decodedWidth": 640,
+ "visibleCount": 24,
+ "uniqueVisible": 24,
+ "missedSampling": [],
+ "sampledNotVisible": [],
+ "queue": 48,
+ "states": {
+ "wait": 48,
+ "ready": 0,
+ "emit": 0,
+ "stop": 0
+ },
+ "nodes": 3,
+ "pooled": 3,
+ "uniquePool": 3,
+ "referenced": 0,
+ "distinctReferences": 0,
+ "uniqueStateMembers": 48,
+ "validStateMembers": true,
+ "heap": null,
+ "scheduledRows": 24,
+ "framesWallMs": {
+ "count": 850,
+ "median": 16.659999999999854,
+ "p95": 16.68000000000029,
+ "max": 20.68000000000029,
+ "over50ms": 0
+ }
+ },
+ {
+ "cycle": 2,
+ "base": 28.519722,
+ "startWall": 29441,
+ "endWall": 43676,
+ "time": 42.669225,
+ "decodedWidth": 640,
+ "visibleCount": 24,
+ "uniqueVisible": 24,
+ "missedSampling": [],
+ "sampledNotVisible": [],
+ "queue": 72,
+ "states": {
+ "wait": 72,
+ "ready": 0,
+ "emit": 0,
+ "stop": 0
+ },
+ "nodes": 3,
+ "pooled": 3,
+ "uniquePool": 3,
+ "referenced": 0,
+ "distinctReferences": 0,
+ "uniqueStateMembers": 72,
+ "validStateMembers": true,
+ "heap": null,
+ "scheduledRows": 24,
+ "framesWallMs": {
+ "count": 848,
+ "median": 16.660000000003492,
+ "p95": 16.68000000000029,
+ "max": 24.239999999997963,
+ "over50ms": 0
+ }
+ }
+ ],
+ "sampleGapsIncludingLifecyclePauses": {
+ "framesWallMs": {
+ "count": 2548,
+ "median": 16.659999999999854,
+ "p95": 16.68000000000029,
+ "max": 100,
+ "over50ms": 2
+ }
+ },
+ "workers": [
+ {
+ "posts": 72,
+ "replies": 72,
+ "terminated": 1,
+ "errors": []
+ }
+ ],
+ "allocations": 3,
+ "reuses": 69,
+ "visibleCount": 72,
+ "recycledCount": 72,
+ "destroyed": true,
+ "retainedPlayerRoots": 0,
+ "priorCandidateCore": {
+ "sampleGapsIncludingLifecyclePauses": {
+ "framesWallMs": {
+ "count": 2548,
+ "p50": 16.659999999999854,
+ "p95": 16.68000000000029,
+ "max": 100
+ },
+ "framesMediaSeconds": {
+ "count": 2548,
+ "p50": 0,
+ "p95": 0.041519000000000084,
+ "max": 0.04606899999999925
+ },
+ "samplingWallMs": {
+ "count": 2548,
+ "p50": 17,
+ "p95": 18,
+ "max": 99
+ },
+ "samplingMediaSeconds": {
+ "count": 2548,
+ "p50": 0,
+ "p95": 0.041519000000000084,
+ "max": 0.04606899999999925
+ }
+ },
+ "cycles": [
+ {
+ "cycle": 0,
+ "visibleCount": 24,
+ "nodes": 3,
+ "framesWallMs": {
+ "count": 850,
+ "p50": 16.659999999999854,
+ "p95": 16.68000000000029,
+ "max": 21.699999999999818
+ }
+ },
+ {
+ "cycle": 1,
+ "visibleCount": 24,
+ "nodes": 3,
+ "framesWallMs": {
+ "count": 850,
+ "p50": 16.659999999999854,
+ "p95": 16.68000000000029,
+ "max": 21.260000000002037
+ }
+ },
+ {
+ "cycle": 2,
+ "visibleCount": 24,
+ "nodes": 3,
+ "framesWallMs": {
+ "count": 848,
+ "p50": 16.660000000003492,
+ "p95": 16.68000000000029,
+ "max": 18.720000000001164
+ }
+ }
+ ]
+ }
+ },
+ {
+ "engine": "firefox",
+ "browser": "155.0",
+ "core": "published",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "implementation": "candidate",
+ "rowsPerSecond": 20,
+ "sha256": "e8193aa8fae3329b3a8e435fc450726d9305e258dddea043ff3114f058516a66",
+ "cycles": [
+ {
+ "cycle": 0,
+ "base": 0.41955,
+ "startWall": 745,
+ "endWall": 15104,
+ "time": 14.753634,
+ "decodedWidth": 640,
+ "visibleCount": 240,
+ "uniqueVisible": 240,
+ "missedSampling": [],
+ "sampledNotVisible": [],
+ "queue": 240,
+ "states": {
+ "wait": 240,
+ "ready": 0,
+ "emit": 0,
+ "stop": 0
+ },
+ "nodes": 22,
+ "pooled": 22,
+ "uniquePool": 22,
+ "referenced": 0,
+ "distinctReferences": 0,
+ "uniqueStateMembers": 240,
+ "validStateMembers": true,
+ "heap": null,
+ "scheduledRows": 240,
+ "framesWallMs": {
+ "count": 856,
+ "median": 16.659999999999854,
+ "p95": 16.68000000000029,
+ "max": 18.76000000000022,
+ "over50ms": 0
+ }
+ },
+ {
+ "cycle": 1,
+ "base": 14.753634,
+ "startWall": 15127,
+ "endWall": 29334,
+ "time": 28.86254,
+ "decodedWidth": 640,
+ "visibleCount": 240,
+ "uniqueVisible": 240,
+ "missedSampling": [],
+ "sampledNotVisible": [],
+ "queue": 480,
+ "states": {
+ "wait": 480,
+ "ready": 0,
+ "emit": 0,
+ "stop": 0
+ },
+ "nodes": 22,
+ "pooled": 22,
+ "uniquePool": 22,
+ "referenced": 0,
+ "distinctReferences": 0,
+ "uniqueStateMembers": 480,
+ "validStateMembers": true,
+ "heap": null,
+ "scheduledRows": 240,
+ "framesWallMs": {
+ "count": 847,
+ "median": 16.659999999999854,
+ "p95": 16.68000000000029,
+ "max": 25.360000000000582,
+ "over50ms": 0
+ }
+ },
+ {
+ "cycle": 2,
+ "base": 28.86254,
+ "startWall": 29355,
+ "endWall": 43597,
+ "time": 43.057862,
+ "decodedWidth": 640,
+ "visibleCount": 240,
+ "uniqueVisible": 240,
+ "missedSampling": [],
+ "sampledNotVisible": [],
+ "queue": 720,
+ "states": {
+ "wait": 720,
+ "ready": 0,
+ "emit": 0,
+ "stop": 0
+ },
+ "nodes": 22,
+ "pooled": 22,
+ "uniquePool": 22,
+ "referenced": 0,
+ "distinctReferences": 0,
+ "uniqueStateMembers": 720,
+ "validStateMembers": true,
+ "heap": null,
+ "scheduledRows": 240,
+ "framesWallMs": {
+ "count": 849,
+ "median": 16.660000000003492,
+ "p95": 16.68000000000029,
+ "max": 20.68000000000029,
+ "over50ms": 0
+ }
+ }
+ ],
+ "sampleGapsIncludingLifecyclePauses": {
+ "framesWallMs": {
+ "count": 2554,
+ "median": 16.659999999999854,
+ "p95": 16.68000000000029,
+ "max": 100,
+ "over50ms": 2
+ }
+ },
+ "workers": [
+ {
+ "posts": 720,
+ "replies": 720,
+ "terminated": 1,
+ "errors": []
+ }
+ ],
+ "allocations": 22,
+ "reuses": 698,
+ "visibleCount": 720,
+ "recycledCount": 720,
+ "destroyed": true,
+ "retainedPlayerRoots": 0,
+ "priorCandidateCore": {
+ "sampleGapsIncludingLifecyclePauses": {
+ "framesWallMs": {
+ "count": 2550,
+ "p50": 16.659999999999854,
+ "p95": 16.68000000000029,
+ "max": 116.66000000000167
+ },
+ "framesMediaSeconds": {
+ "count": 2550,
+ "p50": 0,
+ "p95": 0.04198500000000038,
+ "max": 0.04544299999999879
+ },
+ "samplingWallMs": {
+ "count": 2550,
+ "p50": 17,
+ "p95": 18,
+ "max": 117
+ },
+ "samplingMediaSeconds": {
+ "count": 2550,
+ "p50": 0,
+ "p95": 0.04198500000000038,
+ "max": 0.04544299999999879
+ }
+ },
+ "cycles": [
+ {
+ "cycle": 0,
+ "visibleCount": 240,
+ "nodes": 21,
+ "framesWallMs": {
+ "count": 851,
+ "p50": 16.659999999999854,
+ "p95": 16.68000000000029,
+ "max": 21.0600000000004
+ }
+ },
+ {
+ "cycle": 1,
+ "visibleCount": 240,
+ "nodes": 22,
+ "framesWallMs": {
+ "count": 850,
+ "p50": 16.659999999999854,
+ "p95": 16.68000000000029,
+ "max": 20.92000000000189
+ }
+ },
+ {
+ "cycle": 2,
+ "visibleCount": 240,
+ "nodes": 22,
+ "framesWallMs": {
+ "count": 849,
+ "p50": 16.660000000003492,
+ "p95": 16.68000000000029,
+ "max": 19
+ }
+ }
+ ]
+ }
+ },
+ {
+ "engine": "webkit",
+ "browser": "26.6",
+ "core": "published",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "implementation": "published",
+ "rowsPerSecond": 2,
+ "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f",
+ "cycles": [
+ {
+ "cycle": 0,
+ "base": 0.3188125,
+ "startWall": 1290,
+ "endWall": 16171,
+ "time": 15.0222915,
+ "decodedWidth": 640,
+ "visibleCount": 24,
+ "uniqueVisible": 24,
+ "missedSampling": [],
+ "sampledNotVisible": [],
+ "queue": 24,
+ "states": {
+ "wait": 24,
+ "ready": 0,
+ "emit": 0,
+ "stop": 0
+ },
+ "nodes": 4,
+ "pooled": 3,
+ "uniquePool": 3,
+ "referenced": 0,
+ "distinctReferences": 0,
+ "uniqueStateMembers": 24,
+ "validStateMembers": true,
+ "heap": null,
+ "scheduledRows": 24,
+ "framesWallMs": {
+ "count": 367,
+ "median": 43,
+ "p95": 61,
+ "max": 101,
+ "over50ms": 32
+ }
+ },
+ {
+ "cycle": 1,
+ "base": 15.0222915,
+ "startWall": 16211,
+ "endWall": 31136,
+ "time": 29.589458,
+ "decodedWidth": 640,
+ "visibleCount": 24,
+ "uniqueVisible": 24,
+ "missedSampling": [],
+ "sampledNotVisible": [],
+ "queue": 48,
+ "states": {
+ "wait": 48,
+ "ready": 0,
+ "emit": 0,
+ "stop": 0
+ },
+ "nodes": 5,
+ "pooled": 3,
+ "uniquePool": 3,
+ "referenced": 0,
+ "distinctReferences": 0,
+ "uniqueStateMembers": 48,
+ "validStateMembers": true,
+ "heap": null,
+ "scheduledRows": 24,
+ "framesWallMs": {
+ "count": 362,
+ "median": 44,
+ "p95": 61,
+ "max": 79,
+ "over50ms": 33
+ }
+ },
+ {
+ "cycle": 2,
+ "base": 29.589458,
+ "startWall": 31152,
+ "endWall": 46190,
+ "time": 44.2458628,
+ "decodedWidth": 640,
+ "visibleCount": 24,
+ "uniqueVisible": 24,
+ "missedSampling": [],
+ "sampledNotVisible": [],
+ "queue": 72,
+ "states": {
+ "wait": 72,
+ "ready": 0,
+ "emit": 0,
+ "stop": 0
+ },
+ "nodes": 6,
+ "pooled": 3,
+ "uniquePool": 3,
+ "referenced": 0,
+ "distinctReferences": 0,
+ "uniqueStateMembers": 72,
+ "validStateMembers": true,
+ "heap": null,
+ "scheduledRows": 24,
+ "framesWallMs": {
+ "count": 344,
+ "median": 45,
+ "p95": 62,
+ "max": 77,
+ "over50ms": 46
+ }
+ }
+ ],
+ "sampleGapsIncludingLifecyclePauses": {
+ "framesWallMs": {
+ "count": 1075,
+ "median": 45,
+ "p95": 62,
+ "max": 512,
+ "over50ms": 113
+ }
+ },
+ "workers": [
+ {
+ "posts": 75,
+ "replies": 75,
+ "terminated": 1,
+ "errors": []
+ }
+ ],
+ "allocations": 6,
+ "reuses": 69,
+ "visibleCount": 72,
+ "recycledCount": 72,
+ "destroyed": true,
+ "retainedPlayerRoots": 0,
+ "priorCandidateCore": {
+ "sampleGapsIncludingLifecyclePauses": {
+ "framesWallMs": {
+ "count": 1091,
+ "p50": 45,
+ "p95": 61,
+ "max": 365
+ },
+ "framesMediaSeconds": {
+ "count": 1091,
+ "p50": 0.045083300000001714,
+ "p95": 0.060958299999999355,
+ "max": 0.07760420000000323
+ },
+ "samplingWallMs": {
+ "count": 1120,
+ "p50": 45,
+ "p95": 61,
+ "max": 365
+ },
+ "samplingMediaSeconds": {
+ "count": 1120,
+ "p50": 0.04497920000000022,
+ "p95": 0.06087510000000007,
+ "max": 0.07762500000000472
+ }
+ },
+ "cycles": [
+ {
+ "cycle": 0,
+ "visibleCount": 24,
+ "nodes": 4,
+ "framesWallMs": {
+ "count": 358,
+ "p50": 45,
+ "p95": 61,
+ "max": 64
+ }
+ },
+ {
+ "cycle": 1,
+ "visibleCount": 24,
+ "nodes": 5,
+ "framesWallMs": {
+ "count": 363,
+ "p50": 45,
+ "p95": 61,
+ "max": 76
+ }
+ },
+ {
+ "cycle": 2,
+ "visibleCount": 24,
+ "nodes": 6,
+ "framesWallMs": {
+ "count": 370,
+ "p50": 45,
+ "p95": 49,
+ "max": 78
+ }
+ }
+ ]
+ }
+ },
+ {
+ "engine": "webkit",
+ "browser": "26.6",
+ "core": "published",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "implementation": "published",
+ "rowsPerSecond": 20,
+ "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f",
+ "cycles": [
+ {
+ "cycle": 0,
+ "base": 0.3808125,
+ "startWall": 1202,
+ "endWall": 16169,
+ "time": 15.082104,
+ "decodedWidth": 640,
+ "visibleCount": 240,
+ "uniqueVisible": 240,
+ "missedSampling": [],
+ "sampledNotVisible": [],
+ "queue": 240,
+ "states": {
+ "wait": 240,
+ "ready": 0,
+ "emit": 0,
+ "stop": 0
+ },
+ "nodes": 23,
+ "pooled": 22,
+ "uniquePool": 22,
+ "referenced": 0,
+ "distinctReferences": 0,
+ "uniqueStateMembers": 240,
+ "validStateMembers": true,
+ "heap": null,
+ "scheduledRows": 240,
+ "framesWallMs": {
+ "count": 219,
+ "median": 76,
+ "p95": 79,
+ "max": 94,
+ "over50ms": 172
+ }
+ },
+ {
+ "cycle": 1,
+ "base": 15.082104,
+ "startWall": 16189,
+ "endWall": 31084,
+ "time": 29.659708,
+ "decodedWidth": 640,
+ "visibleCount": 240,
+ "uniqueVisible": 240,
+ "missedSampling": [],
+ "sampledNotVisible": [],
+ "queue": 480,
+ "states": {
+ "wait": 480,
+ "ready": 0,
+ "emit": 0,
+ "stop": 0
+ },
+ "nodes": 24,
+ "pooled": 22,
+ "uniquePool": 22,
+ "referenced": 0,
+ "distinctReferences": 0,
+ "uniqueStateMembers": 480,
+ "validStateMembers": true,
+ "heap": null,
+ "scheduledRows": 240,
+ "framesWallMs": {
+ "count": 224,
+ "median": 76,
+ "p95": 79,
+ "max": 93,
+ "over50ms": 167
+ }
+ },
+ {
+ "cycle": 2,
+ "base": 29.659708,
+ "startWall": 31128,
+ "endWall": 46171,
+ "time": 44.351842,
+ "decodedWidth": 640,
+ "visibleCount": 240,
+ "uniqueVisible": 240,
+ "missedSampling": [],
+ "sampledNotVisible": [],
+ "queue": 720,
+ "states": {
+ "wait": 720,
+ "ready": 0,
+ "emit": 0,
+ "stop": 0
+ },
+ "nodes": 25,
+ "pooled": 22,
+ "uniquePool": 22,
+ "referenced": 0,
+ "distinctReferences": 0,
+ "uniqueStateMembers": 720,
+ "validStateMembers": true,
+ "heap": null,
+ "scheduledRows": 240,
+ "framesWallMs": {
+ "count": 221,
+ "median": 76,
+ "p95": 79,
+ "max": 109,
+ "over50ms": 169
+ }
+ }
+ ],
+ "sampleGapsIncludingLifecyclePauses": {
+ "framesWallMs": {
+ "count": 666,
+ "median": 76,
+ "p95": 79,
+ "max": 411,
+ "over50ms": 510
+ }
+ },
+ "workers": [
+ {
+ "posts": 723,
+ "replies": 723,
+ "terminated": 1,
+ "errors": []
+ }
+ ],
+ "allocations": 25,
+ "reuses": 698,
+ "visibleCount": 720,
+ "recycledCount": 720,
+ "destroyed": true,
+ "retainedPlayerRoots": 0,
+ "priorCandidateCore": {
+ "sampleGapsIncludingLifecyclePauses": {
+ "framesWallMs": {
+ "count": 659,
+ "p50": 77,
+ "p95": 79,
+ "max": 414
+ },
+ "framesMediaSeconds": {
+ "count": 659,
+ "p50": 0.07675000000000054,
+ "p95": 0.07889580000000151,
+ "max": 0.09408340000000237
+ },
+ "samplingWallMs": {
+ "count": 689,
+ "p50": 77,
+ "p95": 79,
+ "max": 414
+ },
+ "samplingMediaSeconds": {
+ "count": 689,
+ "p50": 0.07662499999999994,
+ "p95": 0.0788542000000021,
+ "max": 0.0940833000000012
+ }
+ },
+ "cycles": [
+ {
+ "cycle": 0,
+ "visibleCount": 240,
+ "nodes": 23,
+ "framesWallMs": {
+ "count": 220,
+ "p50": 77,
+ "p95": 79,
+ "max": 93
+ }
+ },
+ {
+ "cycle": 1,
+ "visibleCount": 240,
+ "nodes": 24,
+ "framesWallMs": {
+ "count": 219,
+ "p50": 77,
+ "p95": 79,
+ "max": 93
+ }
+ },
+ {
+ "cycle": 2,
+ "visibleCount": 240,
+ "nodes": 25,
+ "framesWallMs": {
+ "count": 220,
+ "p50": 77,
+ "p95": 79,
+ "max": 94
+ }
+ }
+ ]
+ }
+ },
+ {
+ "engine": "webkit",
+ "browser": "26.6",
+ "core": "published",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "implementation": "candidate",
+ "rowsPerSecond": 2,
+ "sha256": "e8193aa8fae3329b3a8e435fc450726d9305e258dddea043ff3114f058516a66",
+ "cycles": [
+ {
+ "cycle": 0,
+ "base": 0.259125,
+ "startWall": 1199,
+ "endWall": 16157,
+ "time": 15.0650207,
+ "decodedWidth": 640,
+ "visibleCount": 24,
+ "uniqueVisible": 24,
+ "missedSampling": [],
+ "sampledNotVisible": [],
+ "queue": 24,
+ "states": {
+ "wait": 24,
+ "ready": 0,
+ "emit": 0,
+ "stop": 0
+ },
+ "nodes": 3,
+ "pooled": 3,
+ "uniquePool": 3,
+ "referenced": 0,
+ "distinctReferences": 0,
+ "uniqueStateMembers": 24,
+ "validStateMembers": true,
+ "heap": null,
+ "scheduledRows": 24,
+ "framesWallMs": {
+ "count": 372,
+ "median": 32,
+ "p95": 61,
+ "max": 108,
+ "over50ms": 26
+ }
+ },
+ {
+ "cycle": 1,
+ "base": 15.0650207,
+ "startWall": 16213,
+ "endWall": 31202,
+ "time": 29.8125205,
+ "decodedWidth": 640,
+ "visibleCount": 24,
+ "uniqueVisible": 24,
+ "missedSampling": [],
+ "sampledNotVisible": [],
+ "queue": 48,
+ "states": {
+ "wait": 48,
+ "ready": 0,
+ "emit": 0,
+ "stop": 0
+ },
+ "nodes": 3,
+ "pooled": 3,
+ "uniquePool": 3,
+ "referenced": 0,
+ "distinctReferences": 0,
+ "uniqueStateMembers": 48,
+ "validStateMembers": true,
+ "heap": null,
+ "scheduledRows": 24,
+ "framesWallMs": {
+ "count": 368,
+ "median": 45,
+ "p95": 61,
+ "max": 76,
+ "over50ms": 29
+ }
+ },
+ {
+ "cycle": 2,
+ "base": 29.8125205,
+ "startWall": 31244,
+ "endWall": 46118,
+ "time": 44.3341962,
+ "decodedWidth": 640,
+ "visibleCount": 24,
+ "uniqueVisible": 24,
+ "missedSampling": [],
+ "sampledNotVisible": [],
+ "queue": 72,
+ "states": {
+ "wait": 72,
+ "ready": 0,
+ "emit": 0,
+ "stop": 0
+ },
+ "nodes": 3,
+ "pooled": 3,
+ "uniquePool": 3,
+ "referenced": 0,
+ "distinctReferences": 0,
+ "uniqueStateMembers": 72,
+ "validStateMembers": true,
+ "heap": null,
+ "scheduledRows": 24,
+ "framesWallMs": {
+ "count": 349,
+ "median": 45,
+ "p95": 61,
+ "max": 93,
+ "over50ms": 40
+ }
+ }
+ ],
+ "sampleGapsIncludingLifecyclePauses": {
+ "framesWallMs": {
+ "count": 1091,
+ "median": 45,
+ "p95": 61,
+ "max": 420,
+ "over50ms": 97
+ }
+ },
+ "workers": [
+ {
+ "posts": 72,
+ "replies": 72,
+ "terminated": 1,
+ "errors": []
+ }
+ ],
+ "allocations": 3,
+ "reuses": 69,
+ "visibleCount": 72,
+ "recycledCount": 72,
+ "destroyed": true,
+ "retainedPlayerRoots": 0,
+ "priorCandidateCore": {
+ "sampleGapsIncludingLifecyclePauses": {
+ "framesWallMs": {
+ "count": 1089,
+ "p50": 45,
+ "p95": 61,
+ "max": 337
+ },
+ "framesMediaSeconds": {
+ "count": 1089,
+ "p50": 0.045125000000000526,
+ "p95": 0.06106250000000024,
+ "max": 0.06364589999999737
+ },
+ "samplingWallMs": {
+ "count": 1089,
+ "p50": 45,
+ "p95": 61,
+ "max": 338
+ },
+ "samplingMediaSeconds": {
+ "count": 1089,
+ "p50": 0.045125000000000526,
+ "p95": 0.061062499999998465,
+ "max": 0.06362500000000182
+ }
+ },
+ "cycles": [
+ {
+ "cycle": 0,
+ "visibleCount": 24,
+ "nodes": 3,
+ "framesWallMs": {
+ "count": 363,
+ "p50": 45,
+ "p95": 61,
+ "max": 64
+ }
+ },
+ {
+ "cycle": 1,
+ "visibleCount": 24,
+ "nodes": 3,
+ "framesWallMs": {
+ "count": 361,
+ "p50": 45,
+ "p95": 61,
+ "max": 64
+ }
+ },
+ {
+ "cycle": 2,
+ "visibleCount": 24,
+ "nodes": 3,
+ "framesWallMs": {
+ "count": 365,
+ "p50": 45,
+ "p95": 61,
+ "max": 63
+ }
+ }
+ ]
+ }
+ },
+ {
+ "engine": "webkit",
+ "browser": "26.6",
+ "core": "published",
+ "coreInput": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "implementation": "candidate",
+ "rowsPerSecond": 20,
+ "sha256": "e8193aa8fae3329b3a8e435fc450726d9305e258dddea043ff3114f058516a66",
+ "cycles": [
+ {
+ "cycle": 0,
+ "base": 0.2365624,
+ "startWall": 1158,
+ "endWall": 16085,
+ "time": 15.0097915,
+ "decodedWidth": 640,
+ "visibleCount": 240,
+ "uniqueVisible": 240,
+ "missedSampling": [],
+ "sampledNotVisible": [],
+ "queue": 240,
+ "states": {
+ "wait": 240,
+ "ready": 0,
+ "emit": 0,
+ "stop": 0
+ },
+ "nodes": 22,
+ "pooled": 22,
+ "uniquePool": 22,
+ "referenced": 0,
+ "distinctReferences": 0,
+ "uniqueStateMembers": 240,
+ "validStateMembers": true,
+ "heap": null,
+ "scheduledRows": 240,
+ "framesWallMs": {
+ "count": 222,
+ "median": 76,
+ "p95": 79,
+ "max": 92,
+ "over50ms": 171
+ }
+ },
+ {
+ "cycle": 1,
+ "base": 15.0097915,
+ "startWall": 16149,
+ "endWall": 31157,
+ "time": 29.6823539,
+ "decodedWidth": 640,
+ "visibleCount": 240,
+ "uniqueVisible": 240,
+ "missedSampling": [],
+ "sampledNotVisible": [],
+ "queue": 480,
+ "states": {
+ "wait": 480,
+ "ready": 0,
+ "emit": 0,
+ "stop": 0
+ },
+ "nodes": 22,
+ "pooled": 22,
+ "uniquePool": 22,
+ "referenced": 0,
+ "distinctReferences": 0,
+ "uniqueStateMembers": 480,
+ "validStateMembers": true,
+ "heap": null,
+ "scheduledRows": 240,
+ "framesWallMs": {
+ "count": 226,
+ "median": 76,
+ "p95": 79,
+ "max": 92,
+ "over50ms": 168
+ }
+ },
+ {
+ "cycle": 2,
+ "base": 29.6823539,
+ "startWall": 31214,
+ "endWall": 46211,
+ "time": 44.3654045,
+ "decodedWidth": 640,
+ "visibleCount": 240,
+ "uniqueVisible": 240,
+ "missedSampling": [],
+ "sampledNotVisible": [],
+ "queue": 720,
+ "states": {
+ "wait": 720,
+ "ready": 0,
+ "emit": 0,
+ "stop": 0
+ },
+ "nodes": 22,
+ "pooled": 22,
+ "uniquePool": 22,
+ "referenced": 0,
+ "distinctReferences": 0,
+ "uniqueStateMembers": 720,
+ "validStateMembers": true,
+ "heap": null,
+ "scheduledRows": 240,
+ "framesWallMs": {
+ "count": 219,
+ "median": 76,
+ "p95": 78,
+ "max": 92,
+ "over50ms": 172
+ }
+ }
+ ],
+ "sampleGapsIncludingLifecyclePauses": {
+ "framesWallMs": {
+ "count": 669,
+ "median": 76,
+ "p95": 79,
+ "max": 442,
+ "over50ms": 513
+ }
+ },
+ "workers": [
+ {
+ "posts": 720,
+ "replies": 720,
+ "terminated": 1,
+ "errors": []
+ }
+ ],
+ "allocations": 22,
+ "reuses": 698,
+ "visibleCount": 720,
+ "recycledCount": 720,
+ "destroyed": true,
+ "retainedPlayerRoots": 0,
+ "priorCandidateCore": {
+ "sampleGapsIncludingLifecyclePauses": {
+ "framesWallMs": {
+ "count": 656,
+ "p50": 77,
+ "p95": 80,
+ "max": 428
+ },
+ "framesMediaSeconds": {
+ "count": 656,
+ "p50": 0.07679170000000024,
+ "p95": 0.07935409999999621,
+ "max": 0.10902089999999998
+ },
+ "samplingWallMs": {
+ "count": 656,
+ "p50": 77,
+ "p95": 80,
+ "max": 429
+ },
+ "samplingMediaSeconds": {
+ "count": 656,
+ "p50": 0.07679170000000024,
+ "p95": 0.07958329999999947,
+ "max": 0.10904169999999969
+ }
+ },
+ "cycles": [
+ {
+ "cycle": 0,
+ "visibleCount": 240,
+ "nodes": 22,
+ "framesWallMs": {
+ "count": 217,
+ "p50": 77,
+ "p95": 80,
+ "max": 109
+ }
+ },
+ {
+ "cycle": 1,
+ "visibleCount": 240,
+ "nodes": 22,
+ "framesWallMs": {
+ "count": 220,
+ "p50": 77,
+ "p95": 79,
+ "max": 93
+ }
+ },
+ {
+ "cycle": 2,
+ "visibleCount": 240,
+ "nodes": 22,
+ "framesWallMs": {
+ "count": 219,
+ "p50": 77,
+ "p95": 79,
+ "max": 95
+ }
+ }
+ ]
+ }
+ }
+ ],
+ "limitations": [
+ "These are bounded normal-player loads on frozen core 5.4.0, not full Mask/PiP/fullscreen concurrent-load evidence.",
+ "Prior candidate-core runs use identical plugin bytes but were not simultaneous or randomized; frame intervals are observations rather than a causal performance claim.",
+ "Optional unforced heap readings are not a leak proof."
+ ]
+}
diff --git a/refactor/changes/2026-09-14-PKG-DANMUKU-08-fullscreen-lifetimes.md b/refactor/changes/2026-09-14-PKG-DANMUKU-08-fullscreen-lifetimes.md
new file mode 100644
index 000000000..44889544d
--- /dev/null
+++ b/refactor/changes/2026-09-14-PKG-DANMUKU-08-fullscreen-lifetimes.md
@@ -0,0 +1,79 @@
+# PKG-DANMUKU-08 全屏生命周期与旧核心负载检查点
+
+状态:仍 doing。起点 b54a890832ccfec82715129c319befa5d26ef942;本批只补充实际
+浏览器验证和维护文档,没有修改生产运行时、声明、依赖或分发文件。
+
+## 覆盖与测试设计
+
+新增 `test/browser/danmuku-fullscreen.spec.js`:冻结 npm 核心 5.4.0/当前源码核心,
+冻结 npm 弹幕 5.3.0/当前源码插件,CSS 网页全屏/真实 document 全屏,三个引擎。
+每项连续创建三个独立播放器;每个播放器使用真实视频与原生 Worker,按媒体时间
+加载可见弹幕,检查全屏图层宽度、设置/热力图单例、退出后的宽度恢复,以及销毁后
+Worker 恰好终止一次、DOM 无残留。候选还检查 scheduler.frame/operation 清空。
+文件/包哈希和每轮快照写入附件;不能把三个生命周期称作三小时耐久测试。
+
+45 秒单项上限为新增三轮播放/全屏操作预留,没有增大旧用例的超时,也没有重试、
+强制点击、伪造媒体事件、替换全屏 API 或跳过某个浏览器。兼容覆盖 API-04/05/07/08。
+
+`danmuku-stability.spec.js` 的原有三轮 14 秒、每秒 2/20 条负载现在增加核心版本轴,
+附件增加 core 字段,原候选逐条采样/显示/回收、状态池、节点复用和 Worker 断言不变。
+本轮只运行新增旧核心子集;既有候选核心证据仍标明其实际运行日期与源码哈希。
+
+## 首轮失败与修正依据
+
+1. Chromium 首轮 3 通过、5 失败:旧插件保留同名隐藏测量节点,纯文本定位违反
+ 唯一性;改为精确文本与可见节点交集,仍要求实际可见。旧核心销毁后留下的全屏
+ 监听器通过测试的 window 全局数组写入下一实例记录;改为实例局部数组,并保留
+ 每个旧实例后续收到的事件。BASE-LIFE-18 已在 CORE-16 复现和修复;冻结旧核心的
+ 三个实例分别观察三轮/两轮/一轮事件,新核心的每个实例只能收到自己的一轮。
+2. 三引擎首轮 20 通过、4 失败:WebKit 原生退出时 fullscreenElement 和布局先恢复,
+ change 事件稍后投递;测试提前 destroy 抑制了候选的后续通知。现在在销毁之前
+ 使用原有 7 秒 expect 上限等待真实 [true,false] 事件序列,并继续精确断言次数。
+ 这不是在缺少事件时跳过检查,也不是对生产代码增加延时。
+
+两份失败报告、trace 和错误断言均保留。后续报告不覆盖它们,见机器证据中的路径及哈希。
+
+## 已验证结果
+
+固定 Node 24.21.0、Yarn 1.22.22;Windows Chromium 153.0.8010.12、Firefox 155.0、
+WebKit 26.6。以下原生全屏均实际进入 document 全屏,未按 API 不可用计作通过。
+
+| 输入与范围 | 实际结果 |
+| --- | --- |
+| 全屏源码,新旧核心/新旧插件/两个模式/三引擎 | 24 通过,87.07 秒 Yarn 总耗时 |
+| 全屏 main,新旧核心/候选插件/两个模式/三引擎 | 12 通过,47.09 秒 |
+| 全屏 legacy,同上 | 12 通过,47.13 秒 |
+| 旧核心,旧/新插件,每秒 2/20 条,三引擎 | 12 通过,278.37 秒 |
+| 两个测试文件的只读 ESLint | 通过 |
+
+源码 72 次、main/legacy 各 36 次播放器生命周期;每个格式重新创建样本,不能
+把累计次数当作一个播放器的长期稳定性证明。main/legacy 使用实际工作区分发字节,
+不是仓库外安装验证;证据脚本核对加载 SHA 与对应 dist 文件完全一致。
+
+完整快照见 [全屏证据](../baselines/danmuku-fullscreen-validation.json)和
+[旧核心负载证据](../baselines/danmuku-old-core-load-validation.json)。本轮候选普通
+负载三轮完整显示/回收 72 条,分配 3 节点、复用 69 次;密集负载完整处理 720 条,
+分配 21–22 节点、复用 698–699 次。全部 Worker 正常终止,销毁后播放器根节点为零。
+
+对照07的候选核心报告,先核验原报告哈希以及新旧报告加载的插件字节完全一致。
+候选插件的 RAF 帧间隔 P95:Chromium 本轮 16.7/16.8ms,原报告 16.7/16.7ms;
+Firefox 两档均约16.68ms;WebKit 本轮61/79ms,原报告61/80ms。WebKit在这台
+Windows测试环境中本来就没有60fps,旧插件本轮62/79ms;不能把该差异隐去或声称
+所有引擎流畅60fps。原始周期级帧间隔也保留,跨周期总体统计明确包含暂停间隙。
+这些是不同时间运行的有限样本,没有随机化/同时运行对照,不能宣称因果性能提升。
+也未用未强制GC的heap读数证明不存在泄漏。
+
+## 重跑与后续
+
+- 源码:`yarn test:browser:source test/browser/danmuku-fullscreen.spec.js --workers=2`。
+- main/legacy:显式设置 `ARTPLAYER_DANMUKU_ARTIFACT`,同一入口加
+ `--grep 'candidate Danmuku'`。依次运行并在每次前归档前一报告。
+- 旧核心负载:`yarn test:browser:source test/browser/danmuku-stability.spec.js
+ --grep 'published core /' --workers=2`。Playwright 匹配含项目和文件名的完整标题,
+ 不使用 `^published core`;本轮第一次错误选择导致的 No tests found 已独立保留,
+ 不能计作任何测试通过。
+
+08 的完整旧插件组合与 Mask/PiP 组合负载仍待继续;09 承担最终仓库外安装、示例、
+分发与声明收口。设备和远端 CI 也没有被本批桌面结果替代。不标任务完成或 npm 可发布。
+回退本批提交即可撤销测试/文档覆盖,生产运行时无需回退。独立本地检查点提交后运行
+提交审计,再继续下一批;没有 push、部署或发布。
diff --git a/refactor/plan.md b/refactor/plan.md
index a1cffdfbb..32783fa05 100644
--- a/refactor/plan.md
+++ b/refactor/plan.md
@@ -611,7 +611,7 @@
- PKG-DANMUKU-05: [记录](changes/2026-09-13-PKG-DANMUKU-05-resources.md) [记录](baselines/danmuku-resources-validation.json)
- PKG-DANMUKU-06: [记录](changes/2026-09-13-PKG-DANMUKU-06-types.md) [记录](baselines/danmuku-types-validation.json)
- PKG-DANMUKU-07: [记录](changes/2026-09-13-PKG-DANMUKU-07-stability.md) [记录](baselines/danmuku-stability-validation.json) [记录](danmuku-stability.md)
-- PKG-DANMUKU-08: [记录](changes/2026-09-14-PKG-DANMUKU-08-native-combinations.md) [记录](baselines/danmuku-combination-checkpoint.json)
+- PKG-DANMUKU-08: [记录](changes/2026-09-14-PKG-DANMUKU-08-native-combinations.md) [记录](baselines/danmuku-combination-checkpoint.json) [记录](changes/2026-09-14-PKG-DANMUKU-08-fullscreen-lifetimes.md) [记录](baselines/danmuku-fullscreen-validation.json) [记录](baselines/danmuku-old-core-load-validation.json)
- PKG-CANVAS-01: [记录](changes/2026-09-12-PKG-CANVAS-01-contract.md) [记录](baselines/canvas-contract.md) [记录](baselines/canvas-release.json) [记录](canvas-validation.md) [记录](baselines/canvas-contract-validation.json)
- PKG-CANVAS-02: [记录](changes/2026-09-12-PKG-CANVAS-02-tests.md) [记录](baselines/canvas-behavior-validation.json) [记录](canvas-validation.md)
- PKG-CANVAS-03: [记录](changes/2026-09-12-PKG-CANVAS-03-lifecycle.md) [记录](baselines/canvas-lifecycle-validation.json) [记录](canvas-validation.md)
diff --git a/refactor/progress.md b/refactor/progress.md
index 74da16291..86c0a4c71 100644
--- a/refactor/progress.md
+++ b/refactor/progress.md
@@ -1,5 +1,24 @@
# 进度与证据
+## PKG-DANMUKU-08 全屏生命周期与旧核心负载检查点(仍 doing)
+
+三引擎/新旧核心/新旧弹幕的网页及原生document全屏源码24项通过,候选main与
+legacy各12项通过。每项三个完整播放器生命周期,按媒体时间显示行,核验宽度
+恢复、设置/热力图、Worker终止及候选scheduler清空。冻结旧核心销毁后监听器
+残留按已有BASE-LIFE-18独立记录,新核心不接受这项历史差异。
+
+首轮3/5与三引擎首轮20/4失败均保留:分别修正隐藏同名测量节点的测试定位、
+跨实例全局事件记录污染,以及WebKit退出事件晚于fullscreenElement清空的等待。
+没有修改生产运行时/声明、扩大旧超时或重试。新增旧核心持续负载12项通过;
+候选完整处理72/720行、分配3/21–22节点,Worker及DOM清理通过。同插件哈希下
+与07候选核心帧间隔P95接近;不是Mask/PiP组合负载或物理设备性能证明。
+
+见[变更](changes/2026-09-14-PKG-DANMUKU-08-fullscreen-lifetimes.md)、
+[全屏证据](baselines/danmuku-fullscreen-validation.json)和
+[旧核心负载](baselines/danmuku-old-core-load-validation.json)。261项仍192 done、
+21 doing、48 todo;08接续完整旧插件组合及组合负载,09最终安装分发。
+本检查点独立本地提交,随后核验提交审计;没有push/部署/发布。
+
## PKG-DANMUKU-08 原生画中画与真实 Mask 组合检查点(仍 doing)
新增新旧核心中的两次原生Document PiP开窗,按媒体时间显示弹幕,检查图层/热力图
diff --git a/refactor/tasks.json b/refactor/tasks.json
index fd94ccb56..1b107cb01 100644
--- a/refactor/tasks.json
+++ b/refactor/tasks.json
@@ -3562,7 +3562,10 @@
"acceptance": "性能无未解释退化,反复装卸无累计资源",
"evidence": [
"changes/2026-09-14-PKG-DANMUKU-08-native-combinations.md",
- "baselines/danmuku-combination-checkpoint.json"
+ "baselines/danmuku-combination-checkpoint.json",
+ "changes/2026-09-14-PKG-DANMUKU-08-fullscreen-lifetimes.md",
+ "baselines/danmuku-fullscreen-validation.json",
+ "baselines/danmuku-old-core-load-validation.json"
]
},
{
diff --git a/test/browser/README.md b/test/browser/README.md
index 37c0bc793..30422e28f 100644
--- a/test/browser/README.md
+++ b/test/browser/README.md
@@ -219,7 +219,16 @@ row. CPU-block observations remain diagnostic, not no-loss acceptance. Both it a
`danmuku-lifetime.spec.js` accept the same artifact override. The latter verifies
the full visible lifetime after a controlled delay to an actual Worker request.
-`danmuku-stability.spec.js` runs three native 14-second media cycles at 2 or 20
+`danmuku-fullscreen.spec.js` covers old/current core and plugin combinations in
+native document and CSS web fullscreen, with three fresh player lifetimes each.
+It checks timestamp-delivered visible text, layout restoration, Worker/DOM cleanup
+and instance-local event sequences. Frozen-core post-destroy listeners are an
+explicit historical observation, never a waiver for the candidate. Native exit
+must deliver its event before teardown; hidden measurement nodes are not visible
+rows. `ARTPLAYER_DANMUKU_ARTIFACT` selects a real candidate main/legacy input.
+
+`danmuku-stability.spec.js` covers old/current core and plugin combinations and
+runs three native 14-second media cycles at 2 or 20
rows per second, appending through the public load(rows) contract. The candidate
must deliver and recycle every row once, preserve state membership and reuse
actual node identities. Its 90-second per-case deadline budgets the 42 seconds
diff --git a/test/browser/danmuku-fullscreen.spec.js b/test/browser/danmuku-fullscreen.spec.js
new file mode 100644
index 000000000..f976a42bc
--- /dev/null
+++ b/test/browser/danmuku-fullscreen.spec.js
@@ -0,0 +1,167 @@
+import assert from 'node:assert/strict'
+import fs from 'node:fs'
+import process from 'node:process'
+import { ensureArchive, hash, readMember } from '../../refactor/scripts/releases.mjs'
+import { compilePackage } from '../helpers/load.js'
+import { expect, test } from './fixtures.js'
+
+const implementations = new Map()
+test.beforeAll(async () => {
+ const release = JSON.parse(fs.readFileSync('refactor/baselines/danmuku-release.json', 'utf8')).release
+ const member = 'package/dist/artplayer-plugin-danmuku.js'
+ const published = readMember(await ensureArchive(release), member)
+ assert.equal(hash(published), release.files[member])
+ implementations.set('published', { input: `npm ${release.version}`, code: published.toString() })
+ implementations.set('candidate', { input: process.env.ARTPLAYER_DANMUKU_ARTIFACT || 'source UMD', code: process.env.ARTPLAYER_DANMUKU_ARTIFACT ? fs.readFileSync(process.env.ARTPLAYER_DANMUKU_ARTIFACT, 'utf8') : await compilePackage('artplayer-plugin-danmuku', 'umd') })
+})
+
+for (const core of ['published', 'candidate']) {
+ for (const plugin of ['published', 'candidate']) {
+ for (const mode of ['web', 'native']) {
+ test(`${core} core / ${plugin} Danmuku: ${mode} fullscreen across three player lifetimes`, async ({ page }, testInfo) => {
+ test.setTimeout(45000) // Three independent players, native entry/exit and timestamp-delivered rows.
+ await page.goto(`/test/player.html?core=${core}`)
+ const input = implementations.get(plugin)
+ const evidence = { core, plugin, mode, input: input.input, sha256: hash(input.code), cycles: [], outcome: 'incomplete' }
+ await page.evaluate(() => {
+ window.fullscreenWorkers = []
+ window.fullscreenLifetimes = []
+ const NativeWorker = window.Worker
+ window.Worker = class extends NativeWorker {
+ constructor(...args) {
+ super(...args)
+ this.record = { replies: 0, terminated: 0 }
+ window.fullscreenWorkers.push(this.record)
+ this.addEventListener('message', () => this.record.replies++)
+ }
+
+ terminate() {
+ this.record.terminated++
+ return super.terminate()
+ }
+ }
+ })
+ await page.addScriptTag({ content: input.code })
+ try {
+ for (let cycle = 0; cycle < 3; cycle++) {
+ await page.evaluate(({ cycle, mode }) => {
+ window.fullscreenRows = []
+ window.fullscreenErrors = []
+ window.fullscreenModes = []
+ window.art = new window.Artplayer({
+ container: '.player',
+ url: '/assets/sample/video.mp4',
+ muted: true,
+ fullscreen: true,
+ fullscreenWeb: true,
+ plugins: [window.artplayerPluginDanmuku({ danmuku: [], heatmap: true, emitter: true, speed: 5 })],
+ })
+ window.fullscreenPlugin = window.art.plugins.artplayerPluginDanmuku
+ window.fullscreenOwner = window.fullscreenPlugin.config({})
+ const { art, fullscreenModes: modes, fullscreenRows: rows, fullscreenErrors: errors } = window
+ window.fullscreenLifetimes.push({ modes, rows, errors })
+ art.on(mode === 'native' ? 'fullscreen' : 'fullscreenWeb', active => modes.push(active))
+ art.on('artplayerPluginDanmuku:visible', row => rows.push({ text: row.text, time: art.currentTime }))
+ art.on('artplayerPluginDanmuku:error', error => errors.push(String(error)))
+ const toggle = document.createElement('button')
+ toggle.id = 'danmuku-fullscreen-toggle'
+ toggle.textContent = `Fullscreen ${cycle}`
+ toggle.style.cssText = 'position:absolute;top:10px;left:10px;z-index:9999'
+ toggle.onclick = () => {
+ if (mode === 'native')
+ window.art.fullscreen = !window.art.fullscreen
+ else
+ window.art.fullscreenWeb = !window.art.fullscreenWeb
+ }
+ window.art.template.$player.append(toggle)
+ document.querySelector('#play').onclick = () => window.art.play()
+ }, { cycle, mode })
+ await expect.poll(() => page.evaluate(() => window.art.isReady)).toBe(true)
+ await page.click('#play')
+ await expect.poll(() => page.evaluate(() => window.art.currentTime)).toBeGreaterThan(0.1)
+ const width = await page.evaluate(() => window.art.template.$player.clientWidth)
+ await page.click('#danmuku-fullscreen-toggle')
+ if (mode === 'native')
+ await expect.poll(() => page.evaluate(() => (document.fullscreenElement || document.webkitFullscreenElement) === window.art.template.$player)).toBe(true)
+ else
+ await expect.poll(() => page.evaluate(() => window.art.fullscreenWeb)).toBe(true)
+ const text = `Fullscreen row ${cycle}`
+ await page.evaluate(async (text) => {
+ await window.fullscreenPlugin.load([{ text, time: window.art.currentTime + 0.5, mode: 1 }])
+ }, text)
+ await expect.poll(() => page.evaluate(text => window.fullscreenRows.some(row => row.text === text), text)).toBe(true)
+ // The published renderer retains a hidden measurement node with the same text.
+ await expect(page.getByText(text, { exact: true }).and(page.locator(':visible'))).toBeVisible()
+ const entered = await page.evaluate(() => ({
+ width: window.art.template.$player.clientWidth,
+ layerWidth: window.art.template.$danmuku.clientWidth,
+ settings: document.querySelectorAll('.artplayer-plugin-danmuku').length,
+ heatmaps: document.querySelectorAll('.art-control-heatmap').length,
+ time: window.art.currentTime,
+ }))
+ expect(entered.width).toBeGreaterThan(width)
+ expect(entered.layerWidth).toBe(entered.width)
+ expect(entered.settings).toBe(1)
+ expect(entered.heatmaps).toBe(1)
+ await page.evaluate(() => window.art.pause())
+ await expect.poll(() => page.evaluate(() => window.art.video.paused)).toBe(true)
+ await page.click('#danmuku-fullscreen-toggle')
+ if (mode === 'native')
+ await expect.poll(() => page.evaluate(() => Boolean(document.fullscreenElement || document.webkitFullscreenElement))).toBe(false)
+ else
+ await expect.poll(() => page.evaluate(() => window.art.fullscreenWeb)).toBe(false)
+ await expect.poll(() => page.evaluate(() => window.art.template.$player.clientWidth)).toBe(width)
+ // Native exit can clear fullscreenElement before its change event is delivered.
+ await expect.poll(() => page.evaluate(() => window.fullscreenModes)).toEqual([true, false])
+ const after = await page.evaluate(() => {
+ const art = window.art
+ const owner = window.fullscreenOwner
+ const modes = [...window.fullscreenModes]
+ art.destroy()
+ return {
+ modes,
+ errors: window.fullscreenErrors,
+ roots: document.querySelectorAll('.art-video-player').length,
+ settings: document.querySelectorAll('.artplayer-plugin-danmuku').length,
+ heatmaps: document.querySelectorAll('.art-control-heatmap').length,
+ styles: document.querySelectorAll('style#artplayer-plugin-danmuku').length,
+ workers: window.fullscreenWorkers.map(worker => ({ ...worker })),
+ frame: owner.scheduler?.frame,
+ operation: owner.scheduler?.operation,
+ }
+ })
+ evidence.cycles.push({ cycle, entered, after })
+ expect(after.roots + after.settings + after.heatmaps).toBe(0)
+ expect(after.styles).toBe(1)
+ expect(after.errors).toEqual([])
+ expect(after.modes).toEqual([true, false])
+ expect(after.workers).toHaveLength(cycle + 1)
+ for (const worker of after.workers) {
+ expect(worker.replies).toBeGreaterThan(0)
+ expect(worker.terminated).toBe(1)
+ }
+ if (plugin === 'candidate') {
+ expect(after.frame).toBeNull()
+ expect(after.operation).toBeNull()
+ }
+ }
+ evidence.lifetimes = await page.evaluate(() => window.fullscreenLifetimes)
+ for (const [index, lifetime] of evidence.lifetimes.entries()) {
+ // BASE-LIFE-18: the frozen core keeps native listeners after destroy.
+ const changes = core === 'published' && mode === 'native' ? 3 - index : 1
+ expect(lifetime.modes).toEqual(Array.from({ length: changes }, () => [true, false]).flat())
+ expect(lifetime.errors).toEqual([])
+ }
+ evidence.outcome = 'three-lifetimes-fullscreen-playback-cleanup-passed'
+ }
+ finally {
+ await page.evaluate(() => {
+ if (window.art && !window.art.isDestroy)
+ window.art.destroy()
+ })
+ await testInfo.attach('danmuku-fullscreen', { contentType: 'application/json', body: JSON.stringify(evidence) })
+ }
+ })
+ }
+ }
+}
diff --git a/test/browser/danmuku-stability.spec.js b/test/browser/danmuku-stability.spec.js
index dd45ecfcf..44ea50be7 100644
--- a/test/browser/danmuku-stability.spec.js
+++ b/test/browser/danmuku-stability.spec.js
@@ -17,178 +17,180 @@ test.beforeAll(async () => {
: await compilePackage('artplayer-plugin-danmuku', 'umd'))
})
-for (const implementation of ['published', 'candidate']) {
- for (const rate of [2, 20]) {
- test(`${implementation}: ${rate} rows per second across three native playback cycles`, async ({ page }, testInfo) => {
- // Three 14-second media cycles plus setup/teardown; this is a bounded soak,
- // not the ordinary short browser test deadline or a synthetic clock jump.
- test.setTimeout(90000)
- await page.goto('/test/player.html?core=candidate')
- const code = implementations.get(implementation)
- await page.addScriptTag({ content: code })
- await page.evaluate(() => window.createPlayer('/assets/sample/video.mp4'))
- await page.click('#play')
- await expect.poll(() => page.evaluate(() => window.art.currentTime)).toBeGreaterThan(0.1)
- await page.click('#pause')
- await page.evaluate(() => {
- const art = window.art
- const evidence = window.stabilityEvidence = { workers: [], frames: [], samples: [], visible: [], recycled: [], callbacks: [], cycles: [], errors: [], allocations: 0, reuses: 0, bypassedPool: 0 }
- const NativeWorker = window.Worker
- window.Worker = class extends NativeWorker {
- constructor(...args) {
- super(...args)
- this.record = { posts: 0, replies: 0, terminated: 0, errors: [] }
- evidence.workers.push(this.record)
- this.addEventListener('message', () => this.record.replies++)
- this.addEventListener('error', event => this.record.errors.push(event.message))
- }
+for (const core of ['published', 'candidate']) {
+ for (const implementation of ['published', 'candidate']) {
+ for (const rate of [2, 20]) {
+ test(`${core} core / ${implementation}: ${rate} rows per second across three native playback cycles`, async ({ page }, testInfo) => {
+ // Three 14-second media cycles plus setup/teardown; this is a bounded soak,
+ // not the ordinary short browser test deadline or a synthetic clock jump.
+ test.setTimeout(90000)
+ await page.goto(`/test/player.html?core=${core}`)
+ const code = implementations.get(implementation)
+ await page.addScriptTag({ content: code })
+ await page.evaluate(() => window.createPlayer('/assets/sample/video.mp4'))
+ await page.click('#play')
+ await expect.poll(() => page.evaluate(() => window.art.currentTime)).toBeGreaterThan(0.1)
+ await page.click('#pause')
+ await page.evaluate(() => {
+ const art = window.art
+ const evidence = window.stabilityEvidence = { workers: [], frames: [], samples: [], visible: [], recycled: [], callbacks: [], cycles: [], errors: [], allocations: 0, reuses: 0, bypassedPool: 0 }
+ const NativeWorker = window.Worker
+ window.Worker = class extends NativeWorker {
+ constructor(...args) {
+ super(...args)
+ this.record = { posts: 0, replies: 0, terminated: 0, errors: [] }
+ evidence.workers.push(this.record)
+ this.addEventListener('message', () => this.record.replies++)
+ this.addEventListener('error', event => this.record.errors.push(event.message))
+ }
- postMessage(...args) {
- this.record.posts++
- return super.postMessage(...args)
- }
+ postMessage(...args) {
+ this.record.posts++
+ return super.postMessage(...args)
+ }
- terminate() {
- this.record.terminated++
- return super.terminate()
+ terminate() {
+ this.record.terminated++
+ return super.terminate()
+ }
+ }
+ art.on('artplayerPluginDanmuku:error', error => evidence.errors.push(String(error)))
+ art.on('artplayerPluginDanmuku:visible', row => evidence.visible.push({ id: row.id, time: art.currentTime, wall: performance.now() }))
+ art.plugins.add(window.artplayerPluginDanmuku({
+ danmuku: [],
+ heatmap: false,
+ emitter: false,
+ speed: 1,
+ antiOverlap: false,
+ beforeVisible(row) {
+ evidence.callbacks.push({ id: row.id, time: art.currentTime })
+ return true
+ },
+ }))
+ const owner = window.stabilityOwner = art.plugins.artplayerPluginDanmuku.config({})
+ const acquire = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(owner), '$ref').get
+ const acquired = new WeakSet()
+ Object.defineProperty(owner, '$ref', { configurable: true, get() {
+ const available = new Set(this.$refs)
+ const ref = acquire.call(this)
+ if (available.size && !available.has(ref))
+ evidence.bypassedPool++
+ if (acquired.has(ref))
+ evidence.reuses++
+ else evidence.allocations++
+ acquired.add(ref)
+ return ref
+ } })
+ const getter = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(owner), 'readys').get
+ Object.defineProperty(owner, 'readys', { configurable: true, get() {
+ const rows = getter.call(this)
+ evidence.samples.push({ time: art.currentTime, wall: performance.now(), ids: rows.map(row => row.id) })
+ return rows
+ } })
+ const makeWait = owner.makeWait.bind(owner)
+ owner.makeWait = (row) => {
+ if (row.$state === 'emit')
+ evidence.recycled.push({ id: row.id, time: art.currentTime })
+ return makeWait(row)
+ }
+ const frame = (wall) => {
+ if (art.playing)
+ evidence.frames.push({ wall, time: art.currentTime })
+ window.stabilityFrame = requestAnimationFrame(frame)
}
- }
- art.on('artplayerPluginDanmuku:error', error => evidence.errors.push(String(error)))
- art.on('artplayerPluginDanmuku:visible', row => evidence.visible.push({ id: row.id, time: art.currentTime, wall: performance.now() }))
- art.plugins.add(window.artplayerPluginDanmuku({
- danmuku: [],
- heatmap: false,
- emitter: false,
- speed: 1,
- antiOverlap: false,
- beforeVisible(row) {
- evidence.callbacks.push({ id: row.id, time: art.currentTime })
- return true
- },
- }))
- const owner = window.stabilityOwner = art.plugins.artplayerPluginDanmuku.config({})
- const acquire = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(owner), '$ref').get
- const acquired = new WeakSet()
- Object.defineProperty(owner, '$ref', { configurable: true, get() {
- const available = new Set(this.$refs)
- const ref = acquire.call(this)
- if (available.size && !available.has(ref))
- evidence.bypassedPool++
- if (acquired.has(ref))
- evidence.reuses++
- else evidence.allocations++
- acquired.add(ref)
- return ref
- } })
- const getter = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(owner), 'readys').get
- Object.defineProperty(owner, 'readys', { configurable: true, get() {
- const rows = getter.call(this)
- evidence.samples.push({ time: art.currentTime, wall: performance.now(), ids: rows.map(row => row.id) })
- return rows
- } })
- const makeWait = owner.makeWait.bind(owner)
- owner.makeWait = (row) => {
- if (row.$state === 'emit')
- evidence.recycled.push({ id: row.id, time: art.currentTime })
- return makeWait(row)
- }
- const frame = (wall) => {
- if (art.playing)
- evidence.frames.push({ wall, time: art.currentTime })
window.stabilityFrame = requestAnimationFrame(frame)
- }
- window.stabilityFrame = requestAnimationFrame(frame)
- })
- try {
- for (let cycle = 0; cycle < 3; cycle++) {
- await page.evaluate(async ({ cycle, rate }) => {
- const art = window.art
- const base = art.currentTime
- const rows = Array.from({ length: 12 * rate }, (_, index) => ({ id: `${cycle}-${index}`, text: `Row ${index}`, time: base + 0.5 + index / rate, mode: index % 3 }))
- await art.plugins.artplayerPluginDanmuku.load(rows)
- window.stabilityEnd = base + 14
- window.stabilityEvidence.cycles.push({ cycle, base, rows: rows.map(row => ({ id: row.id, time: row.time })), startWall: performance.now() })
- }, { cycle, rate })
- await page.click('#play')
- await expect.poll(() => page.evaluate(() => window.art.currentTime >= window.stabilityEnd), { timeout: 22000 }).toBe(true)
- await page.click('#pause')
- const snapshot = await page.evaluate(() => {
- const owner = window.stabilityOwner
- const record = window.stabilityEvidence.cycles.at(-1)
- const ids = new Set(record.rows.map(row => row.id))
- const visible = window.stabilityEvidence.visible.filter(row => ids.has(row.id))
- const sampled = new Set(window.stabilityEvidence.samples.flatMap(sample => sample.ids).filter(id => ids.has(id)))
- const shown = new Set(visible.map(row => row.id))
- const refs = owner.queue.map(row => row.$ref).filter(Boolean)
- const queue = new Set(owner.queue)
- const members = Object.values(owner.states).flat()
- const memory = performance.memory
- Object.assign(record, {
- endWall: performance.now(),
- time: window.art.currentTime,
- decodedWidth: window.art.video.videoWidth,
- visibleCount: visible.length,
- uniqueVisible: shown.size,
- missedSampling: record.rows.filter(row => !sampled.has(row.id)).map(row => row.id),
- sampledNotVisible: record.rows.filter(row => sampled.has(row.id) && !shown.has(row.id)).map(row => row.id),
- queue: owner.queue.length,
- states: Object.fromEntries(Object.entries(owner.states).map(([state, rows]) => [state, rows.length])),
- nodes: owner.$danmuku.children.length,
- pooled: owner.$refs.length,
- uniquePool: new Set(owner.$refs).size,
- referenced: refs.length,
- distinctReferences: new Set(refs).size,
- uniqueStateMembers: new Set(members).size,
- validStateMembers: Object.entries(owner.states).every(([state, rows]) => rows.every(row => queue.has(row) && row.$state === state)),
- heap: memory ? { used: memory.usedJSHeapSize, total: memory.totalJSHeapSize } : null,
+ })
+ try {
+ for (let cycle = 0; cycle < 3; cycle++) {
+ await page.evaluate(async ({ cycle, rate }) => {
+ const art = window.art
+ const base = art.currentTime
+ const rows = Array.from({ length: 12 * rate }, (_, index) => ({ id: `${cycle}-${index}`, text: `Row ${index}`, time: base + 0.5 + index / rate, mode: index % 3 }))
+ await art.plugins.artplayerPluginDanmuku.load(rows)
+ window.stabilityEnd = base + 14
+ window.stabilityEvidence.cycles.push({ cycle, base, rows: rows.map(row => ({ id: row.id, time: row.time })), startWall: performance.now() })
+ }, { cycle, rate })
+ await page.click('#play')
+ await expect.poll(() => page.evaluate(() => window.art.currentTime >= window.stabilityEnd), { timeout: 22000 }).toBe(true)
+ await page.click('#pause')
+ const snapshot = await page.evaluate(() => {
+ const owner = window.stabilityOwner
+ const record = window.stabilityEvidence.cycles.at(-1)
+ const ids = new Set(record.rows.map(row => row.id))
+ const visible = window.stabilityEvidence.visible.filter(row => ids.has(row.id))
+ const sampled = new Set(window.stabilityEvidence.samples.flatMap(sample => sample.ids).filter(id => ids.has(id)))
+ const shown = new Set(visible.map(row => row.id))
+ const refs = owner.queue.map(row => row.$ref).filter(Boolean)
+ const queue = new Set(owner.queue)
+ const members = Object.values(owner.states).flat()
+ const memory = performance.memory
+ Object.assign(record, {
+ endWall: performance.now(),
+ time: window.art.currentTime,
+ decodedWidth: window.art.video.videoWidth,
+ visibleCount: visible.length,
+ uniqueVisible: shown.size,
+ missedSampling: record.rows.filter(row => !sampled.has(row.id)).map(row => row.id),
+ sampledNotVisible: record.rows.filter(row => sampled.has(row.id) && !shown.has(row.id)).map(row => row.id),
+ queue: owner.queue.length,
+ states: Object.fromEntries(Object.entries(owner.states).map(([state, rows]) => [state, rows.length])),
+ nodes: owner.$danmuku.children.length,
+ pooled: owner.$refs.length,
+ uniquePool: new Set(owner.$refs).size,
+ referenced: refs.length,
+ distinctReferences: new Set(refs).size,
+ uniqueStateMembers: new Set(members).size,
+ validStateMembers: Object.entries(owner.states).every(([state, rows]) => rows.every(row => queue.has(row) && row.$state === state)),
+ heap: memory ? { used: memory.usedJSHeapSize, total: memory.totalJSHeapSize } : null,
+ })
+ return record
})
- return record
- })
- expect(snapshot.decodedWidth).toBeGreaterThan(0)
- expect(snapshot.time - snapshot.base).toBeGreaterThanOrEqual(14)
- // load(rows) appends by public contract; old rows stay in the queue.
- expect(snapshot.queue).toBe((cycle + 1) * 12 * rate)
- expect(Object.values(snapshot.states).reduce((sum, count) => sum + count, 0)).toBe(snapshot.queue)
- if (implementation === 'candidate') {
- expect(snapshot.missedSampling).toEqual([])
- expect(snapshot.sampledNotVisible).toEqual([])
- expect(snapshot.visibleCount).toBe(12 * rate)
- expect(snapshot.uniqueVisible).toBe(12 * rate)
- expect(snapshot.referenced).toBe(0)
- expect(snapshot.uniquePool).toBe(snapshot.pooled)
- expect(snapshot.nodes).toBe(snapshot.pooled)
- expect(snapshot.uniqueStateMembers).toBe(snapshot.queue)
- expect(snapshot.validStateMembers).toBe(true)
+ expect(snapshot.decodedWidth).toBeGreaterThan(0)
+ expect(snapshot.time - snapshot.base).toBeGreaterThanOrEqual(14)
+ // load(rows) appends by public contract; old rows stay in the queue.
+ expect(snapshot.queue).toBe((cycle + 1) * 12 * rate)
+ expect(Object.values(snapshot.states).reduce((sum, count) => sum + count, 0)).toBe(snapshot.queue)
+ if (implementation === 'candidate') {
+ expect(snapshot.missedSampling).toEqual([])
+ expect(snapshot.sampledNotVisible).toEqual([])
+ expect(snapshot.visibleCount).toBe(12 * rate)
+ expect(snapshot.uniqueVisible).toBe(12 * rate)
+ expect(snapshot.referenced).toBe(0)
+ expect(snapshot.uniquePool).toBe(snapshot.pooled)
+ expect(snapshot.nodes).toBe(snapshot.pooled)
+ expect(snapshot.uniqueStateMembers).toBe(snapshot.queue)
+ expect(snapshot.validStateMembers).toBe(true)
+ }
}
}
- }
- finally {
- const evidence = await page.evaluate(() => {
- cancelAnimationFrame(window.stabilityFrame)
- window.art.destroy()
- return { ...window.stabilityEvidence, destroyed: window.art.isDestroy, retainedPlayerRoots: document.querySelectorAll('.art-video-player').length }
- })
- await testInfo.attach('danmuku-stability-observation', { contentType: 'application/json', body: JSON.stringify({ implementation, rate, sha256: hash(code), evidence, scope: 'Three bounded real media cycles; published defects are observed, candidate delivery and resource ownership are asserted. Optional unforced heap readings are not leak proof or comparable across engines.' }) })
- expect(evidence.destroyed).toBe(true)
- expect(evidence.retainedPlayerRoots).toBe(0)
- expect(evidence.errors).toEqual([])
- expect(evidence.workers).toHaveLength(1)
- if (implementation === 'candidate' && evidence.cycles.length === 3) {
- const expected = evidence.cycles.flatMap(cycle => cycle.rows.map(row => row.id)).sort()
- expect(evidence.visible.map(row => row.id).sort()).toEqual(expected)
- expect(evidence.recycled.map(row => row.id).sort()).toEqual(expected)
- expect(evidence.bypassedPool).toBe(0)
- expect(evidence.reuses).toBeGreaterThan(0)
- expect(evidence.allocations + evidence.reuses).toBe(expected.length)
- expect(evidence.cycles.at(-1).nodes).toBe(evidence.allocations)
+ finally {
+ const evidence = await page.evaluate(() => {
+ cancelAnimationFrame(window.stabilityFrame)
+ window.art.destroy()
+ return { ...window.stabilityEvidence, destroyed: window.art.isDestroy, retainedPlayerRoots: document.querySelectorAll('.art-video-player').length }
+ })
+ await testInfo.attach('danmuku-stability-observation', { contentType: 'application/json', body: JSON.stringify({ core, implementation, rate, sha256: hash(code), evidence, scope: 'Three bounded real media cycles; published defects are observed, candidate delivery and resource ownership are asserted. Optional unforced heap readings are not leak proof or comparable across engines.' }) })
+ expect(evidence.destroyed).toBe(true)
+ expect(evidence.retainedPlayerRoots).toBe(0)
+ expect(evidence.errors).toEqual([])
+ expect(evidence.workers).toHaveLength(1)
+ if (implementation === 'candidate' && evidence.cycles.length === 3) {
+ const expected = evidence.cycles.flatMap(cycle => cycle.rows.map(row => row.id)).sort()
+ expect(evidence.visible.map(row => row.id).sort()).toEqual(expected)
+ expect(evidence.recycled.map(row => row.id).sort()).toEqual(expected)
+ expect(evidence.bypassedPool).toBe(0)
+ expect(evidence.reuses).toBeGreaterThan(0)
+ expect(evidence.allocations + evidence.reuses).toBe(expected.length)
+ expect(evidence.cycles.at(-1).nodes).toBe(evidence.allocations)
+ }
+ for (const worker of evidence.workers) {
+ expect(worker.terminated).toBe(1)
+ expect(worker.errors).toEqual([])
+ if (implementation === 'candidate')
+ expect(worker.posts).toBe(worker.replies)
+ }
}
- for (const worker of evidence.workers) {
- expect(worker.terminated).toBe(1)
- expect(worker.errors).toEqual([])
- if (implementation === 'candidate')
- expect(worker.posts).toBe(worker.replies)
- }
- }
- })
+ })
+ }
}
}