Files
ArtPlayer/refactor/baselines/keyboard-control-focus-partial.json
T

2960 lines
138 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"task": "CORE-23",
"status": "partial-control-focus",
"capturedAt": "2026-09-11T11:43:44.165Z",
"parentCommit": "faaa3e8c2d84a9b7864e81e06cbe5bb66c517bd6",
"source": {
"packages/artplayer/src/accessibility/button.ts": "e5afa7aade56116082f54678c44961157950fa550d66e21a4e1ff9bb5369a6f8",
"packages/artplayer/src/accessibility/focus.ts": "2fa16941ac3632cb1e4b466e9a7e29700ef97b7eb2facd4330c59ec0a9320594",
"packages/artplayer/src/accessibility/keyboard.ts": "2d82122732f84f39e59c6852ca081614caa6430a82b32c4749e297826c77eb12",
"packages/artplayer/src/accessibility/moved-focus.ts": "c3d2a7d496381b2a86819b82fbd26cc940a1204fdf19408ccc8db267741d96c9",
"packages/artplayer/src/accessibility/player-focus.ts": "e8fd5222cbfc38cd4938324c83d9f5cef3d01a439464e1570d63a5131c84f20a",
"packages/artplayer/src/accessibility/slider.ts": "533d5e6d806c32a84a578b43ed50993d30b4a414b5a85a34bbc68c37c5673a44",
"packages/artplayer/src/bootstrap/browser.ts": "8d401627e8ea1c87fb44204227b04177a70cc7a0f79f95fb5dc73fe828e46a8c",
"packages/artplayer/src/capture/frame.ts": "eb25d81ec2d40a239103c63cfd80333705251291f2c2da77c740b4d413ea9cd9",
"packages/artplayer/src/component/dom.ts": "740f63e6e5942c444b9f05605880f8d56a77b066dbe5c4791da74f78cb96c668",
"packages/artplayer/src/component/focus.ts": "91b085394e8a70164cee4de9fd454b081d309e21528d9c2cb065a09a2e4f911c",
"packages/artplayer/src/component/resources.ts": "ff158ef0db8ba13343ff6ba329713820cfe2f5c2c446a7873a6cfff782855edf",
"packages/artplayer/src/component/selection.ts": "1f0bd089415da28db862647ffd1a0b4af752576465fb616d4b97ae4f8dcae3a7",
"packages/artplayer/src/component/types.ts": "d7b0e7008b0f6c82e3e97ac43e0188598dca4f740a860e7a60b3b38a46f4565d",
"packages/artplayer/src/config/index.ts": "a56b4d3d6942cfa3e2b47f909fc5ad87e6e3202fd61b29c7afd7649049e31d05",
"packages/artplayer/src/contextmenu/aspectRatio.ts": "a25464e14216b2be392fcb3fdda2439e6d6f98d1962f0acbba30e3bd53bcb2d4",
"packages/artplayer/src/contextmenu/close.ts": "84b7a96df910e6f38140df8b1e73519d209a7331e9be9f42d076ae791757024f",
"packages/artplayer/src/contextmenu/flip.ts": "42c192d23e347d74e0bb814697a4d59eac20afbec102a282d5aa15780cab5f72",
"packages/artplayer/src/contextmenu/index.ts": "4fd292a931b5bda9f16a1c2bedd50cd0d8c0b8fb6010ffc5faaad2c197d2d9e5",
"packages/artplayer/src/contextmenu/info.ts": "f37cf0104510c13a130d2f55114c8f7ff15cc1b51863f97e60825442bdb2bf01",
"packages/artplayer/src/contextmenu/playbackRate.ts": "e177f4017ea9291794fb4023715c81bfc01f927324ab9bd0e32c741e4a3b0ca7",
"packages/artplayer/src/contextmenu/types.ts": "a93fc90f4e17b731e8f6b486a507117810b61c1f1b0d9e775eba27dabeaeee1d",
"packages/artplayer/src/contextmenu/version.ts": "0553a716be0ba49f614059c41eef6dc694a9641fca79e6448b1b30382c6b582b",
"packages/artplayer/src/control/airplay.ts": "539bcc3671c7fe428ab95f9fea8a4943444066bcb742c7cf71591ba347642547",
"packages/artplayer/src/control/builtins.ts": "2a0e12a9741713c92938e1d2009149bbbde498284aa85c63f270d02b27dc22b1",
"packages/artplayer/src/control/fullscreen.ts": "7f8a9e8915abf9cbb9dda05b5c68523a47cc0ccf9ef5e0d9b82bc5c362fe346d",
"packages/artplayer/src/control/fullscreenWeb.ts": "9cb30987a3d2cbb334a80d3f2c41f39fd339bf37a9524c7ed0145cf5c98f1859",
"packages/artplayer/src/control/index.ts": "0d8e5a281f2eeba06c4cc4ac5a042847df53db1a19fdf140efea17d6ab2c0b78",
"packages/artplayer/src/control/layout.ts": "b5134a9d0cb5ad128b1fb229dce79a306b944f750d8620e224a99f5791e6cab5",
"packages/artplayer/src/control/pip.ts": "b829a7c83c5efa6751c2e434345e077339c9f5bc5022af9973f181ca8ce7f7ce",
"packages/artplayer/src/control/playAndPause.ts": "20ed88bcc7ac7622e02a7c4e6be518582c05f0d7c571a97a54b851d79dcf13c5",
"packages/artplayer/src/control/progress.ts": "629c622864619e2515b2eacb1bdfcf523ccce7ce680c8fdf51812e8e50a0cc7e",
"packages/artplayer/src/control/progress/interactions.ts": "da03600375451ecf8c152be5afcc5f1a4f8b759e837bbd54b7faaf8f8b228497",
"packages/artplayer/src/control/progress/keyboard.ts": "03d1d47e6641ea08f765d731f10a6aad35f7c3edc16aa97df822c5f9a7f75eb0",
"packages/artplayer/src/control/progress/position.ts": "a3794ab5ac5dafa5fd61e56acb12c94998bd4b9065dbf0fa4739c6bba1094aa1",
"packages/artplayer/src/control/progress/view.ts": "60ee16d5170be81b8132bb56dd0bc0eaf23e50f5c268d0697c9187b38a14aba9",
"packages/artplayer/src/control/resources.ts": "16fd7c53ac8f47b333041c4f298313390dc102523d47767b8a16f39a2564ba74",
"packages/artplayer/src/control/screenshot.ts": "11a1e3da919e476e7882abc3f74aaa809c3e9fc1de4346ec808731f78b6f27e2",
"packages/artplayer/src/control/selector-keyboard.ts": "6a749f48b23cda62148298e648bb380a6067cc18c7be4258b9ec85c382a56165",
"packages/artplayer/src/control/selector.ts": "a6f0c564c674530da9a0e4ed8762c6dfb81fa89373d64313e1020550731441f6",
"packages/artplayer/src/control/setting.ts": "10ee1118858c41f2e97a6df70d6d5dc978757d0e5d79ec36c11e743e6df86726",
"packages/artplayer/src/control/time.ts": "fa572092e0848878689367fb536e9658d13888d0a0d476babc5acd165af0f8d3",
"packages/artplayer/src/control/types.ts": "a03d6810ce078d358d4a8d1db8ce1246bc59c8429dcdeb0640766a29719df08f",
"packages/artplayer/src/control/volume.ts": "45474d8d7f43d59263aa42e774eaaafeb45530ec24b81a5f589f6c906954568b",
"packages/artplayer/src/display/fullscreen-abandoned.ts": "1715b30d336976921b4957b444418702b7d93dbf1debce47429269638d15810f",
"packages/artplayer/src/display/fullscreen-adapter.ts": "71da10ec21c7706a8264badedac9022c74b865887931e9e369168fe3233c3b2f",
"packages/artplayer/src/display/fullscreen-request.ts": "c6292ded96aab0f2dbc978af251f6cd9f5fd074819529ca498077db8d14e1bfe",
"packages/artplayer/src/display/mini-drag.ts": "73d2f48f868c0ba4d8d5e5df40cbbdb4698c26540f3973b178d9cd374008f1cb",
"packages/artplayer/src/display/mini-layout.ts": "3835fe3d314da2fc624cbeb0e79fcdfa5393f08d87dfde730d2eac4e827f405b",
"packages/artplayer/src/display/mini-view.ts": "83a6e5c6d1923332973009b7ac1561f7a55fb72e5c60e5ebc88af1fa4b641d5e",
"packages/artplayer/src/display/mini.ts": "3ffae49b1407523da2dc5f2bc687018268f6c1d1d3c71911dd4aa96d1a66c1dc",
"packages/artplayer/src/display/native-fullscreen.ts": "323401f2b3ea5186da981a1215b1b9e7dcf4ef4261a8e885fe8ff0c090de6a7a",
"packages/artplayer/src/display/native-pip.ts": "647879ae027cc0ebe684daa31d75511dd882e123e4ca8da2942e659bae3719f2",
"packages/artplayer/src/display/orientation-native.ts": "909980ba837471d9b456545a18fb0ab19f0990e8788936f0580a4b332cd4baee",
"packages/artplayer/src/display/orientation-types.ts": "0d68d2bc99d04db1e2fdf16b74e406e31f8b7e03fd9b6ea271773ed263ffa890",
"packages/artplayer/src/display/orientation-web.ts": "aea55c3b9e8c708fe5559f07cf8f0afd7ad37ac5b1a43bf519245c3072ec4129",
"packages/artplayer/src/display/placement.ts": "dbe4491ebd0f46b4efe13ac567e476fcd9ca5b84da675f19025935b5e3f8d733",
"packages/artplayer/src/display/sizing-types.ts": "da9b3d957dafaca9331f7319257dd8156b3c3e7b6db11f33f11ded48512450ad",
"packages/artplayer/src/display/sizing.ts": "c19856976320f1f35ff5a1049d19a940768300e095270b336dd12861b200da2a",
"packages/artplayer/src/display/types.ts": "6f78b34b903fb30653cc7169f43861f8be426d1f6e9669ef292e41a1606d685c",
"packages/artplayer/src/display/video-fullscreen-state.ts": "5fcb5e6b80ac45577664ef67e0460e0ceefd4022cafacdd7434c376a86d619be",
"packages/artplayer/src/display/video-fullscreen.ts": "b425bf0df462524b5d3accc9e3df383c6635676c152bf4bef09c477a90662728",
"packages/artplayer/src/display/web-fullscreen.ts": "bc091e6dcfb28784dd40ea619ce1fb9061b9e85dcc5bf2b6a303679eee5c727d",
"packages/artplayer/src/display/webkit-pip.ts": "3617927b4bb8fa46f651d0e584141f804ae438e2b4531cc2e9cf9f7eeb027550",
"packages/artplayer/src/dom/event-path.ts": "e952ea847a2e844a79c5c1b83035e03917e0294b80b1eb8af3b3bec0d2f7d333",
"packages/artplayer/src/dom/measure.ts": "84a599351d26a790c5a8f6e7d271486a0a68d5b58457d8ce754d540b54902b96",
"packages/artplayer/src/dom/presentation.ts": "500bded394579dd8194778f73cc44d0724f0a59cb5400957491928534ed091c6",
"packages/artplayer/src/dom/styles.ts": "734e0a4e04d666417a18ac09ed6271ee7630c399d52d7f510a1c19fd6e7b3493",
"packages/artplayer/src/dom/tree.ts": "3bc517ab9fa5317a1445156d53afb27182685eb3b4c0ac2ff41bbde55c9eecb6",
"packages/artplayer/src/events/clickInit.ts": "bd1ba29fe0af4332ceb19297797c4c942a3a74bfd901998d6b93293f1b309300",
"packages/artplayer/src/events/core-types.ts": "a607a3b2eea1b031f23ec0f620f1f4cd68799c4a77138a1443ecb196b00d1662",
"packages/artplayer/src/events/gestureInit.ts": "9e9d1ac0da7f87e89dd0d86fa2820b980e9cb810782d6ab30017de8686fc910b",
"packages/artplayer/src/events/global-types.ts": "3f4672d7af959cfa34ba39aa84ce614f422901437686bba98b14f578df40021c",
"packages/artplayer/src/events/globalInit.ts": "6f6ea497a20a8fd0746b1f020caff76ad6817cd70a1a90fbaea12f992b6d03a7",
"packages/artplayer/src/events/hoverInit.ts": "d1250e0dd35a8ba8067275986acbe6320c22adf1a977ec1009c0c012ed1563fe",
"packages/artplayer/src/events/index.ts": "30d2286316dbd351e93f5a2234dcca84bf68ca28c05921169cca70c2e0b1ecf9",
"packages/artplayer/src/events/listener-registry.ts": "fb062df5151c4e8e970de469f1c7d9af948f72214d32c293c81a5feeb8406124",
"packages/artplayer/src/events/moveInit.ts": "da97591723f8b94a34702559b7ee67a35f172aa696d37dfbecd472581ad3de35",
"packages/artplayer/src/events/resizeInit.ts": "719e27d11d2f93fcbe8368393c9190e251fc86dd0c3c2919f60e9b3b1edd0192",
"packages/artplayer/src/events/scheduling-types.ts": "0fd98e94397064f32cae4c004d9932c006d2db69a7d6d9374ff174d74ff93cd4",
"packages/artplayer/src/events/subscriptions.ts": "98573ed6cce73a73467c0e7fdb8ddc45e66b6bdf684c38886749453b2002a1d8",
"packages/artplayer/src/events/types.ts": "df03625039605314a96ef15b5e3777cbb9d444fd317e1a2fbeaaa0f1e83f6b0f",
"packages/artplayer/src/events/updateInit.ts": "6f174db14d20319f03a76e6ea267a3d71973faac44a92483badfa4420791817a",
"packages/artplayer/src/events/viewInit.ts": "d77b83eab802ff0046a4966e28b810a25592bcada49f526adae37556c1e4c3e9",
"packages/artplayer/src/events/viewport.ts": "6196fccb8b08ae22bde732c4389d9aceb5d727a63efd87b6d3914e338aadc46f",
"packages/artplayer/src/hotkey.ts": "d8e477bf451143e566e1f743a5f253dcf00beb23544709794779f275e11498e8",
"packages/artplayer/src/i18n/ar.ts": "1619066eace6d660be3266bc32f650b75bb09ab880269fd44f4037527583a834",
"packages/artplayer/src/i18n/cs.ts": "472403884eaf0fc10680c66f85e051d51c0efb34afe5e4876b157b5ca7594534",
"packages/artplayer/src/i18n/es.ts": "23a1b5647f031de45cf1c36243327cc64a740856101c2d45324c25e53698b207",
"packages/artplayer/src/i18n/fa.ts": "9d15b2217a49d8ccb9abfbb469d136cd7db9130eccad18ae3f2004e53c72541b",
"packages/artplayer/src/i18n/fr.ts": "a43e3d24ad4a5dca54d427c0db0c3c5278ed1798774546e1ce229a7e5cdcc713",
"packages/artplayer/src/i18n/id.ts": "c80af1d4d5e7b84e96634b3833949325dde7f136853ae3a57e112adec6187d58",
"packages/artplayer/src/i18n/index.ts": "09c6f5bce58e4118dde10e8b2a2d3808785b7fde913a54dd189e0b473e21266a",
"packages/artplayer/src/i18n/pl.ts": "c0ad26fdf7d94f10f032e22c7179303b1f229da9207cb4158838b6260bc38363",
"packages/artplayer/src/i18n/publish.ts": "5b216bbe313b3cda56a5da41fba4fb9d095eeec0dc903fcf284ddd8f94926e99",
"packages/artplayer/src/i18n/ru.ts": "93b91342ba9a1f6aaa75fa991836dd8afc80616f0b2a4ab9c6e573b96645944b",
"packages/artplayer/src/i18n/tr.ts": "aeff1411c07be47a6dcd54716919cc06816538f31b809c912f95592132d91ec7",
"packages/artplayer/src/i18n/vi.ts": "1fd82ae49adea148885a8049fb9c2a05574da6778e8d83ae669b6667bde913f1",
"packages/artplayer/src/i18n/zh-cn.ts": "2dc774985b8d06091fdb2a21704ff400a36a1be80d6c3e1c41d1cdd173bd21c4",
"packages/artplayer/src/i18n/zh-tw.ts": "2e68092b3bc587a7b4e7a5a7597e46798af07e56dcc4eb69c5cb6ae9f6c1830c",
"packages/artplayer/src/icons/airplay.svg": "8c75a40f1bfacee2be2a425e132ff51f3712eba60679010f7b1349d4a04374bc",
"packages/artplayer/src/icons/arrow-left.svg": "8b9d544b7bd728d01747005fc7a2d63f822eed3b605393e2435b6733861b585f",
"packages/artplayer/src/icons/arrow-right.svg": "68c63d6d5810173ec9192c9e96ee7b6aefdc3b79d3c1329fb4d6c750f859fe10",
"packages/artplayer/src/icons/aspect-ratio.svg": "987752a87701523057d8dfa7c45a6a139c4542b96fdcfaf8665722bbeb41f3b2",
"packages/artplayer/src/icons/check.svg": "963ce0aee2337fdee951aa6c917cc75ee0b4e75158887ccc16baebfd3925942b",
"packages/artplayer/src/icons/close.svg": "ebabfe8044f48d5df4d13f4f906a163fd55a4d6f1dedb3b5ba95601209bc8888",
"packages/artplayer/src/icons/config.svg": "e1884d5411296b5cd1bfec7803b558b0afa5ab64478393977b07a662e2e0f15c",
"packages/artplayer/src/icons/defaults.ts": "31df862d754922fe5d68b20911c477d7c22893a6a67b5dcb1a48d3b437a0b23a",
"packages/artplayer/src/icons/error.svg": "b40c01e511a599c9dd369aeb9a3b2a0d1a76ef3c5ede8124cbbc23f8e4e7248c",
"packages/artplayer/src/icons/fast-forward.svg": "abef6fe4d75ffa74d3a84683373b4702a4eda2a5b4045952f969ee62cc68b0be",
"packages/artplayer/src/icons/flip.svg": "474a9d53a97add71e3fb7bc6530a68580ce63a1d83f9b75d1c2908a7cf494152",
"packages/artplayer/src/icons/fullscreen-off.svg": "71125ac56586897e2c0e52035a4d65cff34cf52043a95b45d186e0d268671399",
"packages/artplayer/src/icons/fullscreen-on.svg": "d46cdf265cac729c9b7382722ebe7a4c76d71ad4e5a27c2d5ed8323fd595ebf5",
"packages/artplayer/src/icons/fullscreen-web-off.svg": "52a6862ecd7cba12ab7042de5064c498bc2e9f86b430358c912401fafe4f4a98",
"packages/artplayer/src/icons/fullscreen-web-on.svg": "5cfaae62b61456251e771bff01356fad8376ebedb10a4b8819740f60e6e5a073",
"packages/artplayer/src/icons/index.ts": "7152126328f6e485ee92b6d924c34776518b4a3925b2887867b516f7523b15cc",
"packages/artplayer/src/icons/loading.svg": "485472153890eff3ed49963f7bf7d841f66ca2f40894c01d6e8bcf1bf4ad1c58",
"packages/artplayer/src/icons/lock.svg": "431e9a25fae051016be0efa286387ec3e5f7651c3ecf569bf0ece9842f57156c",
"packages/artplayer/src/icons/pause.svg": "57405dba81dd3d9f329d957fdc704101cbb6f6654325eb0083c03324c4453a68",
"packages/artplayer/src/icons/pip.svg": "1e922140e0941e5b9ef53dc0b4776813e1c470ea229fe3ec786fd148148c3352",
"packages/artplayer/src/icons/play.svg": "41a961c629a55cb25a813e115a25204e492d4e935a0879177e65d6e1ddfd6796",
"packages/artplayer/src/icons/playback-rate.svg": "872deecac0365ab04aeb5ccb1cdd9a0c88589a1442709fdac7c0ed12a241ff2b",
"packages/artplayer/src/icons/screenshot.svg": "538b5cd0c6b20afb98bd850e15019072d652d191075c2869f2fc0f28b597b131",
"packages/artplayer/src/icons/setting.svg": "2976b00d1f03e78f28d0e55ebcb01d5a0746ec1a6ff8de97a5e8294bacdd1fad",
"packages/artplayer/src/icons/state.svg": "620a127f74bb5e249993bd7008c027373263eacb4a44af8adeaa0d7523346887",
"packages/artplayer/src/icons/switch-off.svg": "95a8d81a4a3bfcf7c016d5f71d46a72be73c5e94790c55fd1d31023416ef5deb",
"packages/artplayer/src/icons/switch-on.svg": "cccd0f9c1e54d9ac50c323360da944d8ff44633a82ff17889914b6bc8b1652ae",
"packages/artplayer/src/icons/unlock.svg": "fc058db3d99a475fb9ffbbbb6248978a95990a9c532b83d0955ac28eaa626c60",
"packages/artplayer/src/icons/volume-close.svg": "f7e100fd9e9f3f6e06afe5bc994d5d9305ee4d1ee23fae37e4108cf286dab379",
"packages/artplayer/src/icons/volume.svg": "3a78f40d8b48595e8f15d9189e4d767e0c7abbf0338d3f2db1ac810049dd3942",
"packages/artplayer/src/image/load.ts": "b4f1517243249d5fb017b89f993660e8b148906bbf28d08fe5c9f6d3a41e1e88",
"packages/artplayer/src/index.ts": "20cfe3738b3ce7e11b69721a5f0bdad9db77807417d8e421397a40dfade4c047",
"packages/artplayer/src/info.ts": "6594ff3ee5643d63fec874631865d0e35b4ebdcf8aeafdd9fd3d9c595cfa3713",
"packages/artplayer/src/info/poll.ts": "1d7a519dd1960c8cd5fb7a020d8d3dbcd2eb272b612d823f2167997751aaf663",
"packages/artplayer/src/input/gesture-controller.ts": "1ebbd18184771a623b02ec19c363f84dcc72fdb7cd82bcf2adc97f4a138cb2b4",
"packages/artplayer/src/input/gesture-direction.ts": "65737f60e177338ebb3337a13ca75aeae77d77e94bc21495ddb829cc30de33a7",
"packages/artplayer/src/input/gesture-types.ts": "5ed25db69e0d9579a2fc0ab6faadf00fa073ad73a1ea5aa48096b4430c71141a",
"packages/artplayer/src/input/hotkey-defaults.ts": "c28e14821e5c7f7ac92a302e92439ab68fe77d5ef7d90a36b147b7c979ab96c6",
"packages/artplayer/src/input/hotkey-types.ts": "c7232470d725f3700481ab98bf9203403a67f1ab82e72394baa9c3ad6f3c9a4b",
"packages/artplayer/src/input/keyboard-focus.ts": "270c9dba40c0eb6d9fb36118b53e7f1d42a301ba4514917849523b6a05ed9e11",
"packages/artplayer/src/input/long-press.ts": "110cf16cf9dae845597377ebbc43249e103cbc0ece56f89e44ec6ecc7f3819b0",
"packages/artplayer/src/input/pointer-focus.ts": "802087098c786135eefa6727f13177ffe4a98e2abf48fad0e356b91e26960077",
"packages/artplayer/src/input/pointer-types.ts": "63e679498f8f42f6842f63e910c38717ac3438d58df3a75ef5b77c009b7931d4",
"packages/artplayer/src/layer.ts": "4014268eed043d5dd7b925cdeef6245e357cda67192a1301c5612ef98cdbec12",
"packages/artplayer/src/libs/screenfull.js": "2332b50c0c6364d5c99080be0f5739255e4b9e465d2cca40f761adce9a1908f8",
"packages/artplayer/src/lifecycle/instance.ts": "3168f7db4271bae7a242e80798546b755ac15443e15dd9ebb7675f5a259299d8",
"packages/artplayer/src/lifecycle/resources.ts": "399ea5e84545c973f8967e8ffd7326dad7b3168ca6f96f77286995a5b62ee389",
"packages/artplayer/src/lifecycle/scope.ts": "e2188e8544b27cf8c7ac149e7146af628a2d6166c82b719a247adef5d85be5db",
"packages/artplayer/src/lifecycle/template-rollback.ts": "7a83da6739bcec1587b02f8157934988910d7f9103fe489a0d6f4f65290c3d77",
"packages/artplayer/src/loading.ts": "216fa5e2af5be5fcbf95a1578c869553a02f625683a98333d4a404f9a70df9f5",
"packages/artplayer/src/mask.ts": "500b8c2fb5ded63d5acab3c984fc9757f28a8b6cbd4d5beeac8c5a6d73ca63e4",
"packages/artplayer/src/media/events/forward.ts": "6b1b7e80036bfb523b51843dc6ec6d83c2b949cefb9cef085b2d679a444e46d8",
"packages/artplayer/src/media/events/listen.ts": "4eb7e943c1ebca77da8025d83b7d408276187cd02860b7793284344378bd0fe0",
"packages/artplayer/src/media/events/playback.ts": "2c68e4f6274a0dc65e56d42c928e500fc1d63bf3e03bbdd8a83c3f3ed7ae8ee4",
"packages/artplayer/src/media/events/readiness.ts": "3ba74f26dd9ff0729967097c2cb6f329a9cea57745bfe8173f9173e0d134476a",
"packages/artplayer/src/media/events/reconnect.ts": "876027b5116d0d3628755705682b30630f4b713199ed8015541932d81d2944be",
"packages/artplayer/src/media/events/types.ts": "02bd29ad8b158fa04ce5c1524e397260ef24b94c2cf1f053e7bd02b23e5d29dd",
"packages/artplayer/src/media/hosts.ts": "498d1cde31bf9ee12af1f13523eb0a4553adb285264529378abba5b629829e9a",
"packages/artplayer/src/media/playback.ts": "b0364027e1ea26e44e435a938e93c022836885c2622cda6bc3a7ca791d3c2964",
"packages/artplayer/src/media/position-revision.ts": "ba074cce7e7c6bda84aa234de8eb315e5ca482aa9b06250896f9ac6251192851",
"packages/artplayer/src/media/types.ts": "96d4a7f066cbb6fb9138165dd736b4ca500cb19c827bd7702134d61c44cc0e87",
"packages/artplayer/src/notice.ts": "4faa700323a8fdfd91a59491a5f57da2dee9bd1f2de0d900ed16e9809a208c94",
"packages/artplayer/src/option/defaults.ts": "f357ef80cf32085fcbc3409d92dfa27b31c13fbcf823f576052c0347911c0cca",
"packages/artplayer/src/option/resolve.ts": "53a73627cd540e3f21349c0a43beda35ea5195647a31e3f5b30ac292390b4b1b",
"packages/artplayer/src/option/runtime.ts": "d1bcc7682da05a74d7af173304e47f71ba9eb59e5351436040e9dbdef5c58fa8",
"packages/artplayer/src/option/types.ts": "f2ce01c01acf45fac6cbb34685b8e6c321bcad6b0da2526f3f189eb5962ea0e5",
"packages/artplayer/src/player/airplayMix.ts": "bfa30e1dcd7cbaef97e977344e8a35524fad6bd23089cd8e45945e3b32b4bf04",
"packages/artplayer/src/player/aspectRatioMix.ts": "9e5e7365d469aeaef65a6010cb92734702191f9086b2f21d98c9f0ad7f356898",
"packages/artplayer/src/player/attrMix.ts": "d82150611a69423ed46bf673f44c3e0f61e80425026effd486a6951b6c0dd90c",
"packages/artplayer/src/player/autoHeightMix.ts": "5848e34cd826f5d4cc81d076c83fb3bcea0aed1228cd93a1edb6b8ca402ad175",
"packages/artplayer/src/player/autoSizeMix.ts": "6373a8ea7fff4cd875d17c5d3df6dc37764055ab77850a6c6348526969071cbb",
"packages/artplayer/src/player/cssVarMix.ts": "0d023f28b7a8b4c1a5e2c4dd5672ef4294c86bce0013babd9d52efa32a443b2a",
"packages/artplayer/src/player/currentTimeMix.ts": "cc374abeb85b203b9f31c566a6b9e53a4a1723d609fccc7b0c9c210993b79e75",
"packages/artplayer/src/player/durationMix.ts": "60a9d665cf302dcb6b3e37e2f057e31720935e5e588fd7709231f691f6014191",
"packages/artplayer/src/player/eventInit.ts": "a915c5a618e70b1ab10536b1273ba0fea4ec11d3a2ca629b538e90b5ad2b55f9",
"packages/artplayer/src/player/flipMix.ts": "a1519c83f8c9437a9b7e99a59e38a3d931032c579f4085226fc0955c7c9eab67",
"packages/artplayer/src/player/fullscreenMix.ts": "b339bebb4c87f7b75232d7e0d637ebe25bd09a0a0428ba87339a16af5daa71aa",
"packages/artplayer/src/player/fullscreenWebMix.ts": "75b83a6093c7887ca8725f63c55503d0bf3aafdbbf2347b579120cb257503555",
"packages/artplayer/src/player/index.ts": "359943c88dc99863e510fc0d51f8e8ee2397217e68045f755d4e9538579bdaec",
"packages/artplayer/src/player/loadedMix.ts": "6a4c4a08ed74346dad3e138b1dda22c8c9c12f175fe6d00da41b89c78cbe2c18",
"packages/artplayer/src/player/miniMix.ts": "d68a0c4f6c6059d5831d2d1fd4823b8d3cbce95eefd6d36d38670d6d8720f44e",
"packages/artplayer/src/player/optionInit.ts": "7c1c47679ee6201d0e0d203fc7b449a09309e7b24a0a1099ad259a70fc1b1a35",
"packages/artplayer/src/player/pauseMix.ts": "5bbb68eab7dcf2170c944cabb8d4b82be4e6d7623e37ad6ea464b81c1028bc0b",
"packages/artplayer/src/player/pipMix.ts": "63dfb29ffd66ce7d081b24f8e8bf697c041675b49ab8919e206d2df5132de236",
"packages/artplayer/src/player/playMix.ts": "60249fcacdc5b1bc6f33bcd806e8a4f5472cea21d40550b042794a75027fe34a",
"packages/artplayer/src/player/playbackRateMix.ts": "e185c6ff52cd567f7fd7c30553bbd6c65517324d1d16c4948c3623ef457ef536",
"packages/artplayer/src/player/playedMix.ts": "5b6b89bf8dec1efb19cd51e46af1505bae006bdb3fb798e9dec7e3fb5cf0acaa",
"packages/artplayer/src/player/playingMix.ts": "968c9f6e6d23c233c77d62a593db64adcc6d1a2411f5f1c61a35c6996d6a54d9",
"packages/artplayer/src/player/posterMix.ts": "d569dc24e8e64efe398bd76942bfaf563ffbf64d2a7387ea2e1cb1cf511183d4",
"packages/artplayer/src/player/properties.ts": "76806d6273545ff556cf9c6d341b59b9041455a8ecbe1fd40510e841c0d5710b",
"packages/artplayer/src/player/qualityMix.ts": "980ff584c8a5793f5ec9f049f144df31d184d7c9acef49fbe9d504b7657a96bb",
"packages/artplayer/src/player/rectMix.ts": "a741ee09fa3271df84363c5d73eac1b2e5adb39491f95f8112af81f1219ffed4",
"packages/artplayer/src/player/screenshotMix.ts": "1754bbce09f713204c120cd4657b52c06eb09eb1fe3244f84474e5967cd68e50",
"packages/artplayer/src/player/seekMix.ts": "e6e1bf00e8441f1ce58d2a67a66f7e5e98c86d78620ff10a5e6268d54f13fadb",
"packages/artplayer/src/player/stateMix.ts": "e45b3209a93ab14665d19c5740d5c632187e9fe234b019a2a0263e26884ab3b2",
"packages/artplayer/src/player/subtitleOffsetMix.ts": "e7866cf3a6d9fe271a4c34973f7a961542a738e89a3647df85197cee5853ce8b",
"packages/artplayer/src/player/switchMix.ts": "b47e174ef0edb2b96ff29f2ddd3c9f2dd2a38713db2a81002b18c89ce71994e9",
"packages/artplayer/src/player/themeMix.ts": "5bf11bcf8b77cd5d5f2970bc3edcee315c693c1be3d567770d5107a5951cb48f",
"packages/artplayer/src/player/thumbnailsMix.ts": "6c097d7d00779a6d0d3d65cf9ffd126624a48c9bdb98396c84c39f4de4bdf712",
"packages/artplayer/src/player/toggleMix.ts": "a3050136248e7d0b942387484c61286ac2b33a90724b1dc3460f5061be76f247",
"packages/artplayer/src/player/typeMix.ts": "c2a234a9c09f0269a4bd0659087635995945075ac70a5cf2478c8a135fc1b2fe",
"packages/artplayer/src/player/urlMix.ts": "726a42899261879e03c8b1d4f716458bf3e6e614cecc3bb8d7a581afc2b7866d",
"packages/artplayer/src/player/volumeMix.ts": "d830bb27b984e0ab2f687943fb49abcbd0331d71fe96049fd81edbddaa64f07f",
"packages/artplayer/src/plugins/auto-playback/prompt.ts": "58c6dcaf540296ee6f6bdeeda38ee7302aca2b06ddb152b716c0c2bf9c6c96b4",
"packages/artplayer/src/plugins/auto-playback/records.ts": "133a4ba2fd2d3df724d96eb203d05cffb0b82ecb8de72403974f7979bd37ce01",
"packages/artplayer/src/plugins/autoOrientation.ts": "4a13b0c010ea7a5002e66c422260ed24bb0d18b3ed41ce10974ac7ca2804cc09",
"packages/artplayer/src/plugins/autoPlayback.ts": "e349010813bbcd53503383b707c5f6e6e60d8ade6442d020fe6ba07a128c3122",
"packages/artplayer/src/plugins/builtins.ts": "4631c9775732982dfdc87e16b1bd6b41a350be36fb27e0a9132c11a85b0c016d",
"packages/artplayer/src/plugins/fastForward.ts": "74c03e3fcfe2f87dcb0ef1a5da5410cb96322509fd07e32930128584c54f62b5",
"packages/artplayer/src/plugins/index.ts": "4c97f354769bbcb338263f321876a90745a87a9af2d267e216bd3d9d007f268a",
"packages/artplayer/src/plugins/lock.ts": "9a08cec3a92006be8a9d2dba8d850bc4f8f38d586a50de86d725d0d8929130fd",
"packages/artplayer/src/plugins/miniProgressBar.ts": "21b4850fcaf6b0e82d5e62ca7aca60c179c578f7ff6d5606e6025628ff4b1cc7",
"packages/artplayer/src/plugins/registration.ts": "9891686c32aeaa33c48ca500cf30ab24ffbb0835c6248769b4c645a5ff20129b",
"packages/artplayer/src/plugins/types.ts": "6823098d5ec1bf053f60ddfdd36bfcd3f06f3b528cc5dd30fd676a1318dac590",
"packages/artplayer/src/scheme/index.ts": "dc4a3b5e08478cf72b46b0b59c023359ad5f79b891ea8a6a119ce24a5251821a",
"packages/artplayer/src/setting/activity.ts": "699ceed4bdeddb6d48eacf79c8dbf737f5d2d8c4983be70205322b14807a91b7",
"packages/artplayer/src/setting/aspectRatio.ts": "a16eb58fadf77f0a9009cf162d957ffd59d9b8fde83cc193d510fd642e3456cb",
"packages/artplayer/src/setting/checkpoint.ts": "9d3bff311f9b15c067ca49661af4f48de939f266b8077e7c2f0d66edef22dde6",
"packages/artplayer/src/setting/events.ts": "f7a3347ca146232caf2a8c9a5a18731cf7bc91dca4cd36370e0265c6eb70df53",
"packages/artplayer/src/setting/flip.ts": "e72a4ae33300d9e48880897a4f85a04fa6d9a5fff7b06ecaf9081cfb1bb14404",
"packages/artplayer/src/setting/index.ts": "f6319af15ebe3600a466123dd9d343b86a8d6ed201693ac7ac86dc1d674d477f",
"packages/artplayer/src/setting/keyboard-focus.ts": "2717ce081f9bace0af287759571aadaab7e95c4be3b109a3168311a439b7d158",
"packages/artplayer/src/setting/keyboard-item.ts": "d94bfc0266486615ddb79b9eee3886f48891ebb2e5f465652ef98f142ada89d2",
"packages/artplayer/src/setting/keyboard.ts": "14781e4308b2ea7043314e88fb40f379a3dcfb4c97f10508b96b3455a05c3286",
"packages/artplayer/src/setting/layout.ts": "584604e8fffaeaf1d633d1ed45e64d94595c2a56976e3a3f7ede01839b83a37d",
"packages/artplayer/src/setting/model.ts": "c47348f0f9494c4ce8ea5561bcde6eb698fb11e9197ccdc1ca1359a6d5e370dd",
"packages/artplayer/src/setting/panels.ts": "64d48720971763985a2a652a18c2ed2f32300c3553d56b52049ae40c4dfceae1",
"packages/artplayer/src/setting/playbackRate.ts": "2e70e0d2a33cb0ec9fcdd6d22424979fed7b2e01f87015d6be4e520d5cf4e88a",
"packages/artplayer/src/setting/registration.ts": "c29db62b5d90e0efa4a926c753015e65e96a47add3f5b8840ee51017052edf7c",
"packages/artplayer/src/setting/render.ts": "ed73745f2c7e2d76bbe8ce7202336e5f4de217dc8f0806b769127cb25316faba",
"packages/artplayer/src/setting/resources.ts": "64c28cc2cb08cb87b0864ab957d7999bc94931be4788f282d6f190b8806a81fd",
"packages/artplayer/src/setting/selection.ts": "a642e630924eaf4ad91705fad1fa6e6dc946b32970d809a23da274399fce20ef",
"packages/artplayer/src/setting/subtitleOffset.ts": "86513835d4e542ac39e9d551507473e3e14c71fd0d5ea725267008ecbff6ab83",
"packages/artplayer/src/setting/types.ts": "21a07d75a28bbbe20b3e107b6f1a09cb6f8ef2773ea10a4bd7caa88956e9b99c",
"packages/artplayer/src/setting/update.ts": "79326cb55c52243a7aa8df347a3b081dcd84eb7932fc6162061cc0d9f7078add",
"packages/artplayer/src/source/listen.ts": "c0596b98258c1544c8e4b762509646428450e56588da36908cb8583b8b716c37",
"packages/artplayer/src/source/operation.ts": "a6cb65594a5b28247e3a6889fe0a2f47a34aeb08cdde5f0125800a87862cd559",
"packages/artplayer/src/source/restore-position.ts": "da98a47e8419b33069191e51fc94cc9652302ee4f3eff8ccc7a6dbd4c4c0e2bc",
"packages/artplayer/src/source/switch.ts": "16f5418d73a1d6e89fbb797afcd79af13857861ba25cca9046c16b70ad31d431",
"packages/artplayer/src/source/types.ts": "e5fa3a9cd6b84dffbbb02f61aad966d6046204d857de3e4564c795f02a0259ff",
"packages/artplayer/src/storage.ts": "9c0a0f3d8ac18261db6e49b2ea14322d1d53bfec3531c7337b85005e708fef30",
"packages/artplayer/src/style/accessibility.less": "2da8fcde7d38ca29cd1e42cd57ab0b0d47fde2a2866bbd33223f5c8e459472b5",
"packages/artplayer/src/style/artplayer.less": "4e8513138d5d10c05b66986977d24ed17f1de3c0df3816dec6d90db7a97b5da3",
"packages/artplayer/src/style/aspectRatio.less": "091931a0cdc83e65a669332811ef3276b85bca9e55f7fff42aa46893d728c1ef",
"packages/artplayer/src/style/backdrop.less": "6c2cd0fa200d1f3525df98c3c56dbdc553445724aece3feb0386949245813343",
"packages/artplayer/src/style/bottom.less": "6fb307d8449fd04b804d5e72ea0f175f8aa9c9dd2bf1efbf756f800b39ac97ab",
"packages/artplayer/src/style/contextmenu.less": "70f6c7e26dc96652b659c7bf6fdad92737ed477dea69d253c57dc7266c76586d",
"packages/artplayer/src/style/controls.less": "eb6d4bf4e4ff903d724d45f3ff60f0cf10c02e622fba195555a8179100cdce87",
"packages/artplayer/src/style/danmuku.less": "e4215ee9fa2f1d0599e7311a2415cc975138265b7c6af0448d27d21b6c9e3511",
"packages/artplayer/src/style/flip.less": "5d3c7a81df9be455c2f683ebf48f39597d218dc2144addacb72ee1736bac3b7f",
"packages/artplayer/src/style/fullscreen.less": "dd350d3a0fc556d59b622a53c786b8c2a583e8fb28176e4b9e91baff90479496",
"packages/artplayer/src/style/fullscreenWeb.less": "d74e785c2fbbb2976e131620e751326f622f2916eceff9f2333059ca3296cdc9",
"packages/artplayer/src/style/hideCursor.less": "09a4607c8b0005dc199828172aa8dda395f861e407769b9696d793476c4a7823",
"packages/artplayer/src/style/hint.less": "ae9f3115dfdb1e2d7b8249497c080e6a25f9667f915f6e89820338d67bbc2d85",
"packages/artplayer/src/style/icon.less": "52d8f75c1d193e6160f57ca6997c3f9135adad8eb2338ed60c1eb8e5fe443be5",
"packages/artplayer/src/style/index.less": "7fece0bc5b5a106d051eb80152d5e4558f2e73953c4c33175aa901b9695be61b",
"packages/artplayer/src/style/index.ts": "856afc037ffcd4d18c4b54901ddbb30e310014553fe9d19560e34fb54b8378c1",
"packages/artplayer/src/style/info.less": "fa56d1b8c8936218e581b2426026e4ba85cd5fea20d045c4f69aca96be4059be",
"packages/artplayer/src/style/inject.ts": "9cddbe51b5de0da74f27c045ab982b509c3854cc6b81eeb02a6b974914760a4d",
"packages/artplayer/src/style/layers.less": "9653c581190bb22d60a706109819cd010908898740701c9526957b5682991c5f",
"packages/artplayer/src/style/loading.less": "185b0f05274196ba71fdb1d088b55af568f3342a495490c99c3f0e058a40659e",
"packages/artplayer/src/style/mask.less": "d1239a171b71ea6184cb4aee6660d74d6ffc0c48f7c47c3cf5fbe52d2e93ac92",
"packages/artplayer/src/style/mini.less": "927fd6c6c5ab440a2b25ecc43211ab89106c739385385b62de3880ed45dd7601",
"packages/artplayer/src/style/mixins.less": "c6be95aa682f266749fe37cb89796fbec6488abc537174f817da79bdac6e00b5",
"packages/artplayer/src/style/mobile.less": "ff3f64fca5d2dd7ddd50385d88d9b2fa1a645909488ab7a0978ba4f1670b7c0e",
"packages/artplayer/src/style/notice.less": "72a935c0effc557a9d7ab3baccb2c3b77fc3a1783450b4e3178a40a5325fe369",
"packages/artplayer/src/style/plugins.less": "589d05e12a62e04fe848b36ba748433d23f0b909a04e861b1d6737f2799be183",
"packages/artplayer/src/style/poster.less": "36b38fe138f8c9537ff4e93f7ec4f2dbdba1ec41d243d741ddf1da7c6581e546",
"packages/artplayer/src/style/progress.less": "59b9d95d49dbcb1be40752d7086239b6de5925b0574da231199d999e22ff4990",
"packages/artplayer/src/style/selector.less": "44585c6b0179e34d21eeefce6d3494faacc0e9d108079426876e8847fd441513",
"packages/artplayer/src/style/setting.less": "5618eb443ab6368bc4a18e9a379ce6552629555cdca6074e753aa6fd7baf9bf9",
"packages/artplayer/src/style/subtitle.less": "273cacb63ec0214ba434dcf19a4a455dbbdd408fb2d1749de4878804c1371e41",
"packages/artplayer/src/style/variables.less": "703739b2bdfc77bfde063d8788ef6b6a55b8730764baae8e7d755b7c54d8ecc7",
"packages/artplayer/src/style/video.less": "b89c6f6e27592d49825c68c9ab98d46e81cb1e5add855863f89d19637f98e35f",
"packages/artplayer/src/style/volume.less": "6e99bbe0dbcb40667ef99789b65812dc9c94ce8a1071c00d2edec5eba041c434",
"packages/artplayer/src/subtitle/index.ts": "b4ead680dc82fa47c53d1ec7e5fb8bf94abbf55730d5d1130ad8d544cb42adc8",
"packages/artplayer/src/subtitle/parse.ts": "7db540c5edb1d2312eed82757fd15a7ce6a28996ba20d0087e56730f21dede74",
"packages/artplayer/src/subtitle/render.ts": "96493fc35680af635a8db225a8bf002208df79ed48b1d4ee6cc73587543add5c",
"packages/artplayer/src/subtitle/request.ts": "543c964571bd5ab984bc1adc9f64a8917dd134ed2892ad10b30ed9c859f34119",
"packages/artplayer/src/subtitle/state.ts": "9f79b982d66747170bc39bdaf99b65676310965f23da62a4dec15547c756a56b",
"packages/artplayer/src/subtitle/track.ts": "707f4c43af4ebf4b87521f6f577168460e739274d0cec28b9efe5704d2540d18",
"packages/artplayer/src/subtitle/types.ts": "615e389b4bb36196a69a059eb04cf7e519cdac13d2da15e4374fede2f3b6631b",
"packages/artplayer/src/template.ts": "0ea9155b9292d4c528a464d3c97996ee5a1c9c4aabc2959a744989085db2251b",
"packages/artplayer/src/template/html.ts": "351c472bfd01fa5ba1a4e347ed31bd5faaf823d9b4c5cab1ce8c651e3b175021",
"packages/artplayer/src/template/nodes.ts": "1572746a636647e4d313cc8752d3a110ff81fddb390ad7b0feb6a0db0d42b9d4",
"packages/artplayer/src/template/types.ts": "2bf906b4a209e17dae4d79225e758e2e53772e93f19f188d0131051ea2a0143a",
"packages/artplayer/src/thumbnails/layout.ts": "6630439242a880f53fcb374b7b15c7f486405aab8a0fad651b137f02971eeb59",
"packages/artplayer/src/utils/compatibility.ts": "1fd2a5b17ee3245712eda961d3c0a15caf3c428010112e48231890176ce1e5e2",
"packages/artplayer/src/utils/component.ts": "8f82a43a5871a1b595d145831f1993755f114a74865faf2f2761b41bb4164c4a",
"packages/artplayer/src/utils/dom.ts": "72f3539dabf296df37ab4cc7ade0c8ac9480f399987101589450c787e7d6719b",
"packages/artplayer/src/utils/emitter.ts": "26a93d3ff35b53e71a5f3bb22c252a854559d8151ede50a66a28d9eefae6c008",
"packages/artplayer/src/utils/error.ts": "ba303c7d4e4228919088f9d608fa364596f5853ee646eda2008deee354866f38",
"packages/artplayer/src/utils/file.ts": "ea71d7fc0e818d473bf5a596211ba9d571e4febdf1878014eadefa8d0a98d4cc",
"packages/artplayer/src/utils/format.ts": "891df5b7542b713aef46bf2b93924f42e68eee574afd802db3e6c62ff2655ede",
"packages/artplayer/src/utils/index.ts": "5211af833dddb2937d25dcc772740d62f9d5c5039ce5505bffff0796d4afd756",
"packages/artplayer/src/utils/property.ts": "c737d4582a4382f4038d12dafdf8b43418e508c9b8b859b2f0cc17c20f370343",
"packages/artplayer/src/utils/subtitle.ts": "f058851d11a418e321a8a498472b67fa535fec2c7b5d3df739b6b4f263d00337",
"packages/artplayer/src/utils/time.ts": "b8ce3d50865f6c343e8e3ce9f5c87de565a87b4e9fbcbccbe7030e30e80b93fe"
},
"tooling": {
"package.json": "315746ada69ccb62b8b8c10016b3e467667db9e39518b32dc8036cbade662ea4",
"test/browser/accessibility-controls.spec.js": "d07d9919b9e9d960116770f82ebb61d165bd4b9fbc343a4e821d9cf9313dccef",
"test/browser/accessibility-selector.spec.js": "aae91d2449e2257bfd19999505cf0bb5c631bd49b0dbf597ea1ac48e2f2a25d1",
"test/browser/accessibility-setting.spec.js": "067ace54bf2f73daed4d26c005daaaba09f292f7474825070f2dfbc0c50b544b",
"test/browser/accessibility-slider.spec.js": "b88aa23fc1b76e3a902150a8a9d4a801531f397b0a27120b4741baf67f82bc47",
"test/browser/accessibility.spec.js": "f10bdefdaac2359d1af5d2099cb8e1770bd7ca486362143f663b5c54459d6cab",
"test/browser/components.spec.js": "2be381b052b69baa3b4ae9cf2582593b9d611158e709e056aaa5df3cf969bef4",
"test/browser/hotkey.spec.js": "a6565949f25d702aeb33ef8ebbddf2ed995d67f09a47c7bfaa20010da34dfa1c",
"test/browser/progress-quality.spec.js": "824596e3f0f1a7d8304ca7fed38de4f00b2f967eb87fd48346ad714fbb2e280f",
"test/browser/prompt-components.spec.js": "2513a31306bb17b713aca2f9bc44f045ce34ac547482b4507955b0f1f14484ed",
"test/browser/setting-interaction.spec.js": "030266515b16e1bf8677b30e7748f6a6451b10eba541c5ead9a54b5e57bb05b6",
"test/browser/setting-ownership.spec.js": "ef345200701ef826faa7c3aca564726bc9fad6587cc0af091c579d78ee7f3b4e",
"test/browser/setting-update.spec.js": "2f61a9790ebbdb0f3d86adfc2f9bce5e789806af2517403a47d5c02f1eddd1b1",
"test/browser/setting.spec.js": "19acfd07cb6316381e3bce61e0ae284303aeafc8fca14e1657d73568553c5bb6"
},
"ci": {
"passed": 468,
"productionTypeScript": 241,
"logSha256": "d8cb80523e9f7180228e66e4085a5f8a0758cfa2fb54f99a59ea47179832d755"
},
"browser": {
"stats": {
"startTime": "2026-09-11T11:40:29.902Z",
"duration": 145657.764,
"expected": 507,
"skipped": 0,
"unexpected": 0,
"flaky": 0
},
"versions": {
"chromium": "153.0.8010.12",
"firefox": "155.0",
"webkit": "26.6"
},
"sourceBuildSha256": "7d7e7f8833a596fc4ff6cd9eccf8c76cd369d158d1577f1485db6c75f6fd9076",
"cases": [
{
"file": "accessibility-controls.spec.js",
"title": "candidate: replacing a focused control restores its new entry without intermediate focus",
"engine": "chromium"
},
{
"file": "accessibility-controls.spec.js",
"title": "candidate: removing a focused control chooses a surviving neighbor and preserves external focus",
"engine": "chromium"
},
{
"file": "accessibility-controls.spec.js",
"title": "candidate: failed control replacement recovers focus but a veto keeps the original focused entry",
"engine": "chromium"
},
{
"file": "accessibility-controls.spec.js",
"title": "candidate: callbacks can transfer focus outside without an intermediate or final control focus",
"engine": "chromium"
},
{
"file": "accessibility-controls.spec.js",
"title": "candidate: replacing a focused selector option transfers focus to the new control",
"engine": "chromium"
},
{
"file": "accessibility-controls.spec.js",
"title": "candidate: removing the last focusable control leaves focus on the player without an extra sequential Tab stop",
"engine": "chromium"
},
{
"file": "accessibility-controls.spec.js",
"title": "candidate: focus recovery skips unavailable controls and uses a replacement native button",
"engine": "chromium"
},
{
"file": "accessibility-controls.spec.js",
"title": "candidate: an unrelated instance update cannot take focus from another player",
"engine": "chromium"
},
{
"file": "accessibility-controls.spec.js",
"title": "candidate: a disabled native replacement falls back and focus callbacks can destroy the player",
"engine": "chromium"
},
{
"file": "accessibility-controls.spec.js",
"title": "candidate: replacing a focused control restores its new entry without intermediate focus",
"engine": "firefox"
},
{
"file": "accessibility-controls.spec.js",
"title": "candidate: removing a focused control chooses a surviving neighbor and preserves external focus",
"engine": "firefox"
},
{
"file": "accessibility-controls.spec.js",
"title": "candidate: failed control replacement recovers focus but a veto keeps the original focused entry",
"engine": "firefox"
},
{
"file": "accessibility-controls.spec.js",
"title": "candidate: callbacks can transfer focus outside without an intermediate or final control focus",
"engine": "firefox"
},
{
"file": "accessibility-controls.spec.js",
"title": "candidate: replacing a focused selector option transfers focus to the new control",
"engine": "firefox"
},
{
"file": "accessibility-controls.spec.js",
"title": "candidate: removing the last focusable control leaves focus on the player without an extra sequential Tab stop",
"engine": "firefox"
},
{
"file": "accessibility-controls.spec.js",
"title": "candidate: focus recovery skips unavailable controls and uses a replacement native button",
"engine": "firefox"
},
{
"file": "accessibility-controls.spec.js",
"title": "candidate: an unrelated instance update cannot take focus from another player",
"engine": "firefox"
},
{
"file": "accessibility-controls.spec.js",
"title": "candidate: a disabled native replacement falls back and focus callbacks can destroy the player",
"engine": "firefox"
},
{
"file": "accessibility-controls.spec.js",
"title": "candidate: replacing a focused control restores its new entry without intermediate focus",
"engine": "webkit"
},
{
"file": "accessibility-controls.spec.js",
"title": "candidate: removing a focused control chooses a surviving neighbor and preserves external focus",
"engine": "webkit"
},
{
"file": "accessibility-controls.spec.js",
"title": "candidate: failed control replacement recovers focus but a veto keeps the original focused entry",
"engine": "webkit"
},
{
"file": "accessibility-controls.spec.js",
"title": "candidate: callbacks can transfer focus outside without an intermediate or final control focus",
"engine": "webkit"
},
{
"file": "accessibility-controls.spec.js",
"title": "candidate: replacing a focused selector option transfers focus to the new control",
"engine": "webkit"
},
{
"file": "accessibility-controls.spec.js",
"title": "candidate: removing the last focusable control leaves focus on the player without an extra sequential Tab stop",
"engine": "webkit"
},
{
"file": "accessibility-controls.spec.js",
"title": "candidate: focus recovery skips unavailable controls and uses a replacement native button",
"engine": "webkit"
},
{
"file": "accessibility-controls.spec.js",
"title": "candidate: an unrelated instance update cannot take focus from another player",
"engine": "webkit"
},
{
"file": "accessibility-controls.spec.js",
"title": "candidate: a disabled native replacement falls back and focus callbacks can destroy the player",
"engine": "webkit"
},
{
"file": "accessibility-selector.spec.js",
"title": "candidate: selector Tab entry, focus navigation and typeahead do not commit before Enter",
"engine": "chromium"
},
{
"file": "accessibility-selector.spec.js",
"title": "candidate: selector Space commits once and Escape closes before web fullscreen exits",
"engine": "chromium"
},
{
"file": "accessibility-selector.spec.js",
"title": "candidate: keyboard selector retains asynchronous choice ownership and disposal",
"engine": "chromium"
},
{
"file": "accessibility-selector.spec.js",
"title": "candidate: pointer hover and selector selection retain their existing click behavior",
"engine": "chromium"
},
{
"file": "accessibility-selector.spec.js",
"title": "candidate: custom native controls retain their semantics and typing inside selector content",
"engine": "chromium"
},
{
"file": "accessibility-selector.spec.js",
"title": "candidate: empty selectors are disabled and selection callbacks keep explicitly moved focus",
"engine": "chromium"
},
{
"file": "accessibility-selector.spec.js",
"title": "candidate: typeahead accepts prefixes, resets after navigation and leaves modified input alone",
"engine": "chromium"
},
{
"file": "accessibility-selector.spec.js",
"title": "candidate: native trigger markup remains a single button and can open the existing popup",
"engine": "chromium"
},
{
"file": "accessibility-selector.spec.js",
"title": "candidate: a dismissed hovered selector releases the next Escape to fullscreen",
"engine": "chromium"
},
{
"file": "accessibility-selector.spec.js",
"title": "candidate: hovering an empty selector does not announce an expanded popup",
"engine": "chromium"
},
{
"file": "accessibility-selector.spec.js",
"title": "candidate: selector Tab entry, focus navigation and typeahead do not commit before Enter",
"engine": "firefox"
},
{
"file": "accessibility-selector.spec.js",
"title": "candidate: selector Space commits once and Escape closes before web fullscreen exits",
"engine": "firefox"
},
{
"file": "accessibility-selector.spec.js",
"title": "candidate: keyboard selector retains asynchronous choice ownership and disposal",
"engine": "firefox"
},
{
"file": "accessibility-selector.spec.js",
"title": "candidate: pointer hover and selector selection retain their existing click behavior",
"engine": "firefox"
},
{
"file": "accessibility-selector.spec.js",
"title": "candidate: custom native controls retain their semantics and typing inside selector content",
"engine": "firefox"
},
{
"file": "accessibility-selector.spec.js",
"title": "candidate: empty selectors are disabled and selection callbacks keep explicitly moved focus",
"engine": "firefox"
},
{
"file": "accessibility-selector.spec.js",
"title": "candidate: typeahead accepts prefixes, resets after navigation and leaves modified input alone",
"engine": "firefox"
},
{
"file": "accessibility-selector.spec.js",
"title": "candidate: native trigger markup remains a single button and can open the existing popup",
"engine": "firefox"
},
{
"file": "accessibility-selector.spec.js",
"title": "candidate: a dismissed hovered selector releases the next Escape to fullscreen",
"engine": "firefox"
},
{
"file": "accessibility-selector.spec.js",
"title": "candidate: hovering an empty selector does not announce an expanded popup",
"engine": "firefox"
},
{
"file": "accessibility-selector.spec.js",
"title": "candidate: selector Tab entry, focus navigation and typeahead do not commit before Enter",
"engine": "webkit"
},
{
"file": "accessibility-selector.spec.js",
"title": "candidate: selector Space commits once and Escape closes before web fullscreen exits",
"engine": "webkit"
},
{
"file": "accessibility-selector.spec.js",
"title": "candidate: keyboard selector retains asynchronous choice ownership and disposal",
"engine": "webkit"
},
{
"file": "accessibility-selector.spec.js",
"title": "candidate: pointer hover and selector selection retain their existing click behavior",
"engine": "webkit"
},
{
"file": "accessibility-selector.spec.js",
"title": "candidate: custom native controls retain their semantics and typing inside selector content",
"engine": "webkit"
},
{
"file": "accessibility-selector.spec.js",
"title": "candidate: empty selectors are disabled and selection callbacks keep explicitly moved focus",
"engine": "webkit"
},
{
"file": "accessibility-selector.spec.js",
"title": "candidate: typeahead accepts prefixes, resets after navigation and leaves modified input alone",
"engine": "webkit"
},
{
"file": "accessibility-selector.spec.js",
"title": "candidate: native trigger markup remains a single button and can open the existing popup",
"engine": "webkit"
},
{
"file": "accessibility-selector.spec.js",
"title": "candidate: a dismissed hovered selector releases the next Escape to fullscreen",
"engine": "webkit"
},
{
"file": "accessibility-selector.spec.js",
"title": "candidate: hovering an empty selector does not announce an expanded popup",
"engine": "webkit"
},
{
"file": "accessibility-setting.spec.js",
"title": "candidate: setting keyboard enters nested panels and returns to the originating item",
"engine": "chromium"
},
{
"file": "accessibility-setting.spec.js",
"title": "candidate: setting switches and native ranges keep callbacks and avoid player shortcuts",
"engine": "chromium"
},
{
"file": "accessibility-setting.spec.js",
"title": "candidate: setting Tab leaves without trapping focus and pointer opening keeps its old focus path",
"engine": "chromium"
},
{
"file": "accessibility-setting.spec.js",
"title": "candidate: setting update, failed replacement and removal recover visible focus",
"engine": "chromium"
},
{
"file": "accessibility-setting.spec.js",
"title": "candidate: suspended settings ignore keyboard callbacks and restored items resume",
"engine": "chromium"
},
{
"file": "accessibility-setting.spec.js",
"title": "candidate: native setting buttons retain their role, click path and keyboard navigation",
"engine": "chromium"
},
{
"file": "accessibility-setting.spec.js",
"title": "candidate: destroying during moved focus restoration cancels fullscreen notifications",
"engine": "chromium"
},
{
"file": "accessibility-setting.spec.js",
"title": "candidate: setting keyboard enters nested panels and returns to the originating item",
"engine": "firefox"
},
{
"file": "accessibility-setting.spec.js",
"title": "candidate: setting switches and native ranges keep callbacks and avoid player shortcuts",
"engine": "firefox"
},
{
"file": "accessibility-setting.spec.js",
"title": "candidate: setting Tab leaves without trapping focus and pointer opening keeps its old focus path",
"engine": "firefox"
},
{
"file": "accessibility-setting.spec.js",
"title": "candidate: setting update, failed replacement and removal recover visible focus",
"engine": "firefox"
},
{
"file": "accessibility-setting.spec.js",
"title": "candidate: suspended settings ignore keyboard callbacks and restored items resume",
"engine": "firefox"
},
{
"file": "accessibility-setting.spec.js",
"title": "candidate: native setting buttons retain their role, click path and keyboard navigation",
"engine": "firefox"
},
{
"file": "accessibility-setting.spec.js",
"title": "candidate: destroying during moved focus restoration cancels fullscreen notifications",
"engine": "firefox"
},
{
"file": "accessibility-setting.spec.js",
"title": "candidate: setting keyboard enters nested panels and returns to the originating item",
"engine": "webkit"
},
{
"file": "accessibility-setting.spec.js",
"title": "candidate: setting switches and native ranges keep callbacks and avoid player shortcuts",
"engine": "webkit"
},
{
"file": "accessibility-setting.spec.js",
"title": "candidate: setting Tab leaves without trapping focus and pointer opening keeps its old focus path",
"engine": "webkit"
},
{
"file": "accessibility-setting.spec.js",
"title": "candidate: setting update, failed replacement and removal recover visible focus",
"engine": "webkit"
},
{
"file": "accessibility-setting.spec.js",
"title": "candidate: suspended settings ignore keyboard callbacks and restored items resume",
"engine": "webkit"
},
{
"file": "accessibility-setting.spec.js",
"title": "candidate: native setting buttons retain their role, click path and keyboard navigation",
"engine": "webkit"
},
{
"file": "accessibility-setting.spec.js",
"title": "candidate: destroying during moved focus restoration cancels fullscreen notifications",
"engine": "webkit"
},
{
"file": "accessibility-slider.spec.js",
"title": "candidate: progress is the first control, seeks with owned keys and follows actual media time",
"engine": "chromium"
},
{
"file": "accessibility-slider.spec.js",
"title": "candidate: volume panel opens from keyboard focus and the slider unmutes without seeking",
"engine": "chromium"
},
{
"file": "accessibility-slider.spec.js",
"title": "candidate: unknown duration disables progress until metadata returns and labels use i18n",
"engine": "chromium"
},
{
"file": "accessibility-slider.spec.js",
"title": "candidate: progress removal and volume destruction inside callbacks cancel pending writes",
"engine": "chromium"
},
{
"file": "accessibility-slider.spec.js",
"title": "candidate: progress is the first control, seeks with owned keys and follows actual media time",
"engine": "firefox"
},
{
"file": "accessibility-slider.spec.js",
"title": "candidate: volume panel opens from keyboard focus and the slider unmutes without seeking",
"engine": "firefox"
},
{
"file": "accessibility-slider.spec.js",
"title": "candidate: unknown duration disables progress until metadata returns and labels use i18n",
"engine": "firefox"
},
{
"file": "accessibility-slider.spec.js",
"title": "candidate: progress removal and volume destruction inside callbacks cancel pending writes",
"engine": "firefox"
},
{
"file": "accessibility-slider.spec.js",
"title": "candidate: progress is the first control, seeks with owned keys and follows actual media time",
"engine": "webkit"
},
{
"file": "accessibility-slider.spec.js",
"title": "candidate: volume panel opens from keyboard focus and the slider unmutes without seeking",
"engine": "webkit"
},
{
"file": "accessibility-slider.spec.js",
"title": "candidate: unknown duration disables progress until metadata returns and labels use i18n",
"engine": "webkit"
},
{
"file": "accessibility-slider.spec.js",
"title": "candidate: progress removal and volume destruction inside callbacks cancel pending writes",
"engine": "webkit"
},
{
"file": "accessibility.spec.js",
"title": "published: Tab skips the non-interactive main controls",
"engine": "chromium"
},
{
"file": "accessibility.spec.js",
"title": "candidate: keyboard reaches stable play control and toggles once with focus retained",
"engine": "chromium"
},
{
"file": "accessibility.spec.js",
"title": "candidate: mute state, focus visibility and automatic hiding follow keyboard focus",
"engine": "chromium"
},
{
"file": "accessibility.spec.js",
"title": "candidate: custom control keyboard clicks retain the callback and release on replacement",
"engine": "chromium"
},
{
"file": "accessibility.spec.js",
"title": "candidate: native buttons inside custom controls retain activation without player hotkeys",
"engine": "chromium"
},
{
"file": "accessibility.spec.js",
"title": "candidate: pointer focus does not prevent the existing automatic control hiding",
"engine": "chromium"
},
{
"file": "accessibility.spec.js",
"title": "published: Tab skips the non-interactive main controls",
"engine": "firefox"
},
{
"file": "accessibility.spec.js",
"title": "candidate: keyboard reaches stable play control and toggles once with focus retained",
"engine": "firefox"
},
{
"file": "accessibility.spec.js",
"title": "candidate: mute state, focus visibility and automatic hiding follow keyboard focus",
"engine": "firefox"
},
{
"file": "accessibility.spec.js",
"title": "candidate: custom control keyboard clicks retain the callback and release on replacement",
"engine": "firefox"
},
{
"file": "accessibility.spec.js",
"title": "candidate: native buttons inside custom controls retain activation without player hotkeys",
"engine": "firefox"
},
{
"file": "accessibility.spec.js",
"title": "candidate: pointer focus does not prevent the existing automatic control hiding",
"engine": "firefox"
},
{
"file": "accessibility.spec.js",
"title": "published: Tab skips the non-interactive main controls",
"engine": "webkit"
},
{
"file": "accessibility.spec.js",
"title": "candidate: keyboard reaches stable play control and toggles once with focus retained",
"engine": "webkit"
},
{
"file": "accessibility.spec.js",
"title": "candidate: mute state, focus visibility and automatic hiding follow keyboard focus",
"engine": "webkit"
},
{
"file": "accessibility.spec.js",
"title": "candidate: custom control keyboard clicks retain the callback and release on replacement",
"engine": "webkit"
},
{
"file": "accessibility.spec.js",
"title": "candidate: native buttons inside custom controls retain activation without player hotkeys",
"engine": "webkit"
},
{
"file": "accessibility.spec.js",
"title": "candidate: pointer focus does not prevent the existing automatic control hiding",
"engine": "webkit"
},
{
"file": "components.spec.js",
"title": "candidate: control layout follows resize and removal with observer fallback=false",
"engine": "chromium"
},
{
"file": "components.spec.js",
"title": "candidate: control layout follows resize and removal with observer fallback=true",
"engine": "chromium"
},
{
"file": "components.spec.js",
"title": "published: selector background clicks and rejection ownership are explicit",
"engine": "chromium"
},
{
"file": "components.spec.js",
"title": "published: beforeUnmount errors remain retryable and detached nodes can be removed",
"engine": "chromium"
},
{
"file": "components.spec.js",
"title": "published: failed mounted reentry preserves its successful replacement",
"engine": "chromium"
},
{
"file": "components.spec.js",
"title": "published: context menu builtin selection and owned updates preserve state",
"engine": "chromium"
},
{
"file": "components.spec.js",
"title": "published: a prototype-named component keeps the registry prototype intact",
"engine": "chromium"
},
{
"file": "components.spec.js",
"title": "published: component factories, ordering, bound methods and update hooks retain contracts",
"engine": "chromium"
},
{
"file": "components.spec.js",
"title": "published: removed builtin time and volume controls stop owned effects",
"engine": "chromium"
},
{
"file": "components.spec.js",
"title": "published: selector items can be reused by an update without changing getter flags",
"engine": "chromium"
},
{
"file": "components.spec.js",
"title": "published: async selector results cannot overwrite a newer choice or removed entry",
"engine": "chromium"
},
{
"file": "components.spec.js",
"title": "published: a failed mounted hook rolls back its DOM alias and listeners",
"engine": "chromium"
},
{
"file": "components.spec.js",
"title": "published: reentrant beforeUnmount removes only once",
"engine": "chromium"
},
{
"file": "components.spec.js",
"title": "published: narrow controls stay inside the player without hiding buttons",
"engine": "chromium"
},
{
"file": "components.spec.js",
"title": "published: progress markers treat text as data and removed drags cannot seek",
"engine": "chromium"
},
{
"file": "components.spec.js",
"title": "candidate: selector background clicks and rejection ownership are explicit",
"engine": "chromium"
},
{
"file": "components.spec.js",
"title": "candidate: beforeUnmount errors remain retryable and detached nodes can be removed",
"engine": "chromium"
},
{
"file": "components.spec.js",
"title": "candidate: failed mounted reentry preserves its successful replacement",
"engine": "chromium"
},
{
"file": "components.spec.js",
"title": "candidate: context menu builtin selection and owned updates preserve state",
"engine": "chromium"
},
{
"file": "components.spec.js",
"title": "candidate: a prototype-named component keeps the registry prototype intact",
"engine": "chromium"
},
{
"file": "components.spec.js",
"title": "candidate: component factories, ordering, bound methods and update hooks retain contracts",
"engine": "chromium"
},
{
"file": "components.spec.js",
"title": "candidate: removed builtin time and volume controls stop owned effects",
"engine": "chromium"
},
{
"file": "components.spec.js",
"title": "candidate: selector items can be reused by an update without changing getter flags",
"engine": "chromium"
},
{
"file": "components.spec.js",
"title": "candidate: async selector results cannot overwrite a newer choice or removed entry",
"engine": "chromium"
},
{
"file": "components.spec.js",
"title": "candidate: a failed mounted hook rolls back its DOM alias and listeners",
"engine": "chromium"
},
{
"file": "components.spec.js",
"title": "candidate: reentrant beforeUnmount removes only once",
"engine": "chromium"
},
{
"file": "components.spec.js",
"title": "candidate: narrow controls stay inside the player without hiding buttons",
"engine": "chromium"
},
{
"file": "components.spec.js",
"title": "candidate: progress markers treat text as data and removed drags cannot seek",
"engine": "chromium"
},
{
"file": "components.spec.js",
"title": "candidate: control layout follows resize and removal with observer fallback=false",
"engine": "firefox"
},
{
"file": "components.spec.js",
"title": "candidate: control layout follows resize and removal with observer fallback=true",
"engine": "firefox"
},
{
"file": "components.spec.js",
"title": "published: selector background clicks and rejection ownership are explicit",
"engine": "firefox"
},
{
"file": "components.spec.js",
"title": "published: beforeUnmount errors remain retryable and detached nodes can be removed",
"engine": "firefox"
},
{
"file": "components.spec.js",
"title": "published: failed mounted reentry preserves its successful replacement",
"engine": "firefox"
},
{
"file": "components.spec.js",
"title": "published: context menu builtin selection and owned updates preserve state",
"engine": "firefox"
},
{
"file": "components.spec.js",
"title": "published: a prototype-named component keeps the registry prototype intact",
"engine": "firefox"
},
{
"file": "components.spec.js",
"title": "published: component factories, ordering, bound methods and update hooks retain contracts",
"engine": "firefox"
},
{
"file": "components.spec.js",
"title": "published: removed builtin time and volume controls stop owned effects",
"engine": "firefox"
},
{
"file": "components.spec.js",
"title": "published: selector items can be reused by an update without changing getter flags",
"engine": "firefox"
},
{
"file": "components.spec.js",
"title": "published: async selector results cannot overwrite a newer choice or removed entry",
"engine": "firefox"
},
{
"file": "components.spec.js",
"title": "published: a failed mounted hook rolls back its DOM alias and listeners",
"engine": "firefox"
},
{
"file": "components.spec.js",
"title": "published: reentrant beforeUnmount removes only once",
"engine": "firefox"
},
{
"file": "components.spec.js",
"title": "published: narrow controls stay inside the player without hiding buttons",
"engine": "firefox"
},
{
"file": "components.spec.js",
"title": "published: progress markers treat text as data and removed drags cannot seek",
"engine": "firefox"
},
{
"file": "components.spec.js",
"title": "candidate: selector background clicks and rejection ownership are explicit",
"engine": "firefox"
},
{
"file": "components.spec.js",
"title": "candidate: beforeUnmount errors remain retryable and detached nodes can be removed",
"engine": "firefox"
},
{
"file": "components.spec.js",
"title": "candidate: failed mounted reentry preserves its successful replacement",
"engine": "firefox"
},
{
"file": "components.spec.js",
"title": "candidate: context menu builtin selection and owned updates preserve state",
"engine": "firefox"
},
{
"file": "components.spec.js",
"title": "candidate: a prototype-named component keeps the registry prototype intact",
"engine": "firefox"
},
{
"file": "components.spec.js",
"title": "candidate: component factories, ordering, bound methods and update hooks retain contracts",
"engine": "firefox"
},
{
"file": "components.spec.js",
"title": "candidate: removed builtin time and volume controls stop owned effects",
"engine": "firefox"
},
{
"file": "components.spec.js",
"title": "candidate: selector items can be reused by an update without changing getter flags",
"engine": "firefox"
},
{
"file": "components.spec.js",
"title": "candidate: async selector results cannot overwrite a newer choice or removed entry",
"engine": "firefox"
},
{
"file": "components.spec.js",
"title": "candidate: a failed mounted hook rolls back its DOM alias and listeners",
"engine": "firefox"
},
{
"file": "components.spec.js",
"title": "candidate: reentrant beforeUnmount removes only once",
"engine": "firefox"
},
{
"file": "components.spec.js",
"title": "candidate: narrow controls stay inside the player without hiding buttons",
"engine": "firefox"
},
{
"file": "components.spec.js",
"title": "candidate: progress markers treat text as data and removed drags cannot seek",
"engine": "firefox"
},
{
"file": "components.spec.js",
"title": "candidate: control layout follows resize and removal with observer fallback=false",
"engine": "webkit"
},
{
"file": "components.spec.js",
"title": "candidate: control layout follows resize and removal with observer fallback=true",
"engine": "webkit"
},
{
"file": "components.spec.js",
"title": "published: selector background clicks and rejection ownership are explicit",
"engine": "webkit"
},
{
"file": "components.spec.js",
"title": "published: beforeUnmount errors remain retryable and detached nodes can be removed",
"engine": "webkit"
},
{
"file": "components.spec.js",
"title": "published: failed mounted reentry preserves its successful replacement",
"engine": "webkit"
},
{
"file": "components.spec.js",
"title": "published: context menu builtin selection and owned updates preserve state",
"engine": "webkit"
},
{
"file": "components.spec.js",
"title": "published: a prototype-named component keeps the registry prototype intact",
"engine": "webkit"
},
{
"file": "components.spec.js",
"title": "published: component factories, ordering, bound methods and update hooks retain contracts",
"engine": "webkit"
},
{
"file": "components.spec.js",
"title": "published: removed builtin time and volume controls stop owned effects",
"engine": "webkit"
},
{
"file": "components.spec.js",
"title": "published: selector items can be reused by an update without changing getter flags",
"engine": "webkit"
},
{
"file": "components.spec.js",
"title": "published: async selector results cannot overwrite a newer choice or removed entry",
"engine": "webkit"
},
{
"file": "components.spec.js",
"title": "published: a failed mounted hook rolls back its DOM alias and listeners",
"engine": "webkit"
},
{
"file": "components.spec.js",
"title": "published: reentrant beforeUnmount removes only once",
"engine": "webkit"
},
{
"file": "components.spec.js",
"title": "published: narrow controls stay inside the player without hiding buttons",
"engine": "webkit"
},
{
"file": "components.spec.js",
"title": "published: progress markers treat text as data and removed drags cannot seek",
"engine": "webkit"
},
{
"file": "components.spec.js",
"title": "candidate: selector background clicks and rejection ownership are explicit",
"engine": "webkit"
},
{
"file": "components.spec.js",
"title": "candidate: beforeUnmount errors remain retryable and detached nodes can be removed",
"engine": "webkit"
},
{
"file": "components.spec.js",
"title": "candidate: failed mounted reentry preserves its successful replacement",
"engine": "webkit"
},
{
"file": "components.spec.js",
"title": "candidate: context menu builtin selection and owned updates preserve state",
"engine": "webkit"
},
{
"file": "components.spec.js",
"title": "candidate: a prototype-named component keeps the registry prototype intact",
"engine": "webkit"
},
{
"file": "components.spec.js",
"title": "candidate: component factories, ordering, bound methods and update hooks retain contracts",
"engine": "webkit"
},
{
"file": "components.spec.js",
"title": "candidate: removed builtin time and volume controls stop owned effects",
"engine": "webkit"
},
{
"file": "components.spec.js",
"title": "candidate: selector items can be reused by an update without changing getter flags",
"engine": "webkit"
},
{
"file": "components.spec.js",
"title": "candidate: async selector results cannot overwrite a newer choice or removed entry",
"engine": "webkit"
},
{
"file": "components.spec.js",
"title": "candidate: a failed mounted hook rolls back its DOM alias and listeners",
"engine": "webkit"
},
{
"file": "components.spec.js",
"title": "candidate: reentrant beforeUnmount removes only once",
"engine": "webkit"
},
{
"file": "components.spec.js",
"title": "candidate: narrow controls stay inside the player without hiding buttons",
"engine": "webkit"
},
{
"file": "components.spec.js",
"title": "candidate: progress markers treat text as data and removed drags cannot seek",
"engine": "webkit"
},
{
"file": "hotkey.spec.js",
"title": "published: mobile keeps keyboard initialization opt-in through the existing init method",
"engine": "chromium"
},
{
"file": "hotkey.spec.js",
"title": "published: prototype-named hotkeys do not crash or replace the keys prototype",
"engine": "chromium"
},
{
"file": "hotkey.spec.js",
"title": "candidate: mobile keeps keyboard initialization opt-in through the existing init method",
"engine": "chromium"
},
{
"file": "hotkey.spec.js",
"title": "candidate: prototype-named hotkeys do not crash or replace the keys prototype",
"engine": "chromium"
},
{
"file": "hotkey.spec.js",
"title": "candidate: native keyboard play/pause, seek, volume and web-fullscreen Escape retain their behavior",
"engine": "chromium"
},
{
"file": "hotkey.spec.js",
"title": "candidate: inherited editing and IME composition do not activate player shortcuts",
"engine": "chromium"
},
{
"file": "hotkey.spec.js",
"title": "candidate: plaintext editing and IME composition do not activate player shortcuts",
"engine": "chromium"
},
{
"file": "hotkey.spec.js",
"title": "candidate: select editing and IME composition do not activate player shortcuts",
"engine": "chromium"
},
{
"file": "hotkey.spec.js",
"title": "candidate: destroying during a key callback stops remaining keys and notifications",
"engine": "chromium"
},
{
"file": "hotkey.spec.js",
"title": "published: hotkey registration retains chain, array identity, receiver and event order",
"engine": "chromium"
},
{
"file": "hotkey.spec.js",
"title": "published: rebound document input retains typing instead of triggering a hotkey",
"engine": "chromium"
},
{
"file": "hotkey.spec.js",
"title": "published: shadow-root input retains typing instead of triggering a hotkey",
"engine": "chromium"
},
{
"file": "hotkey.spec.js",
"title": "published: repeated hotkey init does not multiply the keyboard subscription",
"engine": "chromium"
},
{
"file": "hotkey.spec.js",
"title": "candidate: hotkey registration retains chain, array identity, receiver and event order",
"engine": "chromium"
},
{
"file": "hotkey.spec.js",
"title": "candidate: rebound document input retains typing instead of triggering a hotkey",
"engine": "chromium"
},
{
"file": "hotkey.spec.js",
"title": "candidate: shadow-root input retains typing instead of triggering a hotkey",
"engine": "chromium"
},
{
"file": "hotkey.spec.js",
"title": "candidate: repeated hotkey init does not multiply the keyboard subscription",
"engine": "chromium"
},
{
"file": "hotkey.spec.js",
"title": "published: mobile keeps keyboard initialization opt-in through the existing init method",
"engine": "firefox"
},
{
"file": "hotkey.spec.js",
"title": "published: prototype-named hotkeys do not crash or replace the keys prototype",
"engine": "firefox"
},
{
"file": "hotkey.spec.js",
"title": "candidate: mobile keeps keyboard initialization opt-in through the existing init method",
"engine": "firefox"
},
{
"file": "hotkey.spec.js",
"title": "candidate: prototype-named hotkeys do not crash or replace the keys prototype",
"engine": "firefox"
},
{
"file": "hotkey.spec.js",
"title": "candidate: native keyboard play/pause, seek, volume and web-fullscreen Escape retain their behavior",
"engine": "firefox"
},
{
"file": "hotkey.spec.js",
"title": "candidate: inherited editing and IME composition do not activate player shortcuts",
"engine": "firefox"
},
{
"file": "hotkey.spec.js",
"title": "candidate: plaintext editing and IME composition do not activate player shortcuts",
"engine": "firefox"
},
{
"file": "hotkey.spec.js",
"title": "candidate: select editing and IME composition do not activate player shortcuts",
"engine": "firefox"
},
{
"file": "hotkey.spec.js",
"title": "candidate: destroying during a key callback stops remaining keys and notifications",
"engine": "firefox"
},
{
"file": "hotkey.spec.js",
"title": "published: hotkey registration retains chain, array identity, receiver and event order",
"engine": "firefox"
},
{
"file": "hotkey.spec.js",
"title": "published: rebound document input retains typing instead of triggering a hotkey",
"engine": "firefox"
},
{
"file": "hotkey.spec.js",
"title": "published: shadow-root input retains typing instead of triggering a hotkey",
"engine": "firefox"
},
{
"file": "hotkey.spec.js",
"title": "published: repeated hotkey init does not multiply the keyboard subscription",
"engine": "firefox"
},
{
"file": "hotkey.spec.js",
"title": "candidate: hotkey registration retains chain, array identity, receiver and event order",
"engine": "firefox"
},
{
"file": "hotkey.spec.js",
"title": "candidate: rebound document input retains typing instead of triggering a hotkey",
"engine": "firefox"
},
{
"file": "hotkey.spec.js",
"title": "candidate: shadow-root input retains typing instead of triggering a hotkey",
"engine": "firefox"
},
{
"file": "hotkey.spec.js",
"title": "candidate: repeated hotkey init does not multiply the keyboard subscription",
"engine": "firefox"
},
{
"file": "hotkey.spec.js",
"title": "published: mobile keeps keyboard initialization opt-in through the existing init method",
"engine": "webkit"
},
{
"file": "hotkey.spec.js",
"title": "published: prototype-named hotkeys do not crash or replace the keys prototype",
"engine": "webkit"
},
{
"file": "hotkey.spec.js",
"title": "candidate: mobile keeps keyboard initialization opt-in through the existing init method",
"engine": "webkit"
},
{
"file": "hotkey.spec.js",
"title": "candidate: prototype-named hotkeys do not crash or replace the keys prototype",
"engine": "webkit"
},
{
"file": "hotkey.spec.js",
"title": "candidate: native keyboard play/pause, seek, volume and web-fullscreen Escape retain their behavior",
"engine": "webkit"
},
{
"file": "hotkey.spec.js",
"title": "candidate: inherited editing and IME composition do not activate player shortcuts",
"engine": "webkit"
},
{
"file": "hotkey.spec.js",
"title": "candidate: plaintext editing and IME composition do not activate player shortcuts",
"engine": "webkit"
},
{
"file": "hotkey.spec.js",
"title": "candidate: select editing and IME composition do not activate player shortcuts",
"engine": "webkit"
},
{
"file": "hotkey.spec.js",
"title": "candidate: destroying during a key callback stops remaining keys and notifications",
"engine": "webkit"
},
{
"file": "hotkey.spec.js",
"title": "published: hotkey registration retains chain, array identity, receiver and event order",
"engine": "webkit"
},
{
"file": "hotkey.spec.js",
"title": "published: rebound document input retains typing instead of triggering a hotkey",
"engine": "webkit"
},
{
"file": "hotkey.spec.js",
"title": "published: shadow-root input retains typing instead of triggering a hotkey",
"engine": "webkit"
},
{
"file": "hotkey.spec.js",
"title": "published: repeated hotkey init does not multiply the keyboard subscription",
"engine": "webkit"
},
{
"file": "hotkey.spec.js",
"title": "candidate: hotkey registration retains chain, array identity, receiver and event order",
"engine": "webkit"
},
{
"file": "hotkey.spec.js",
"title": "candidate: rebound document input retains typing instead of triggering a hotkey",
"engine": "webkit"
},
{
"file": "hotkey.spec.js",
"title": "candidate: shadow-root input retains typing instead of triggering a hotkey",
"engine": "webkit"
},
{
"file": "hotkey.spec.js",
"title": "candidate: repeated hotkey init does not multiply the keyboard subscription",
"engine": "webkit"
},
{
"file": "progress-quality.spec.js",
"title": "published: progress click reentry through remove cannot continue an obsolete seek",
"engine": "chromium"
},
{
"file": "progress-quality.spec.js",
"title": "published: progress click reentry through destroy cannot continue an obsolete seek",
"engine": "chromium"
},
{
"file": "progress-quality.spec.js",
"title": "published: progress click reentry through source cannot continue an obsolete seek",
"engine": "chromium"
},
{
"file": "progress-quality.spec.js",
"title": "published: real progress click keeps setBar before seek and clamps the edges",
"engine": "chromium"
},
{
"file": "progress-quality.spec.js",
"title": "published: a progress drag ends when its source is replaced and can restart on the new source",
"engine": "chromium"
},
{
"file": "progress-quality.spec.js",
"title": "published: a caller-owned media Blob URL remains readable after switching and destroying the player",
"engine": "chromium"
},
{
"file": "progress-quality.spec.js",
"title": "published: quality selectors retain default labels, source position and empty-array behavior",
"engine": "chromium"
},
{
"file": "progress-quality.spec.js",
"title": "candidate: progress click reentry through remove cannot continue an obsolete seek",
"engine": "chromium"
},
{
"file": "progress-quality.spec.js",
"title": "candidate: progress click reentry through destroy cannot continue an obsolete seek",
"engine": "chromium"
},
{
"file": "progress-quality.spec.js",
"title": "candidate: progress click reentry through source cannot continue an obsolete seek",
"engine": "chromium"
},
{
"file": "progress-quality.spec.js",
"title": "candidate: real progress click keeps setBar before seek and clamps the edges",
"engine": "chromium"
},
{
"file": "progress-quality.spec.js",
"title": "candidate: a progress drag ends when its source is replaced and can restart on the new source",
"engine": "chromium"
},
{
"file": "progress-quality.spec.js",
"title": "candidate: a caller-owned media Blob URL remains readable after switching and destroying the player",
"engine": "chromium"
},
{
"file": "progress-quality.spec.js",
"title": "candidate: quality selectors retain default labels, source position and empty-array behavior",
"engine": "chromium"
},
{
"file": "progress-quality.spec.js",
"title": "published: progress click reentry through remove cannot continue an obsolete seek",
"engine": "firefox"
},
{
"file": "progress-quality.spec.js",
"title": "published: progress click reentry through destroy cannot continue an obsolete seek",
"engine": "firefox"
},
{
"file": "progress-quality.spec.js",
"title": "published: progress click reentry through source cannot continue an obsolete seek",
"engine": "firefox"
},
{
"file": "progress-quality.spec.js",
"title": "published: real progress click keeps setBar before seek and clamps the edges",
"engine": "firefox"
},
{
"file": "progress-quality.spec.js",
"title": "published: a progress drag ends when its source is replaced and can restart on the new source",
"engine": "firefox"
},
{
"file": "progress-quality.spec.js",
"title": "published: a caller-owned media Blob URL remains readable after switching and destroying the player",
"engine": "firefox"
},
{
"file": "progress-quality.spec.js",
"title": "published: quality selectors retain default labels, source position and empty-array behavior",
"engine": "firefox"
},
{
"file": "progress-quality.spec.js",
"title": "candidate: progress click reentry through remove cannot continue an obsolete seek",
"engine": "firefox"
},
{
"file": "progress-quality.spec.js",
"title": "candidate: progress click reentry through destroy cannot continue an obsolete seek",
"engine": "firefox"
},
{
"file": "progress-quality.spec.js",
"title": "candidate: progress click reentry through source cannot continue an obsolete seek",
"engine": "firefox"
},
{
"file": "progress-quality.spec.js",
"title": "candidate: real progress click keeps setBar before seek and clamps the edges",
"engine": "firefox"
},
{
"file": "progress-quality.spec.js",
"title": "candidate: a progress drag ends when its source is replaced and can restart on the new source",
"engine": "firefox"
},
{
"file": "progress-quality.spec.js",
"title": "candidate: a caller-owned media Blob URL remains readable after switching and destroying the player",
"engine": "firefox"
},
{
"file": "progress-quality.spec.js",
"title": "candidate: quality selectors retain default labels, source position and empty-array behavior",
"engine": "firefox"
},
{
"file": "progress-quality.spec.js",
"title": "published: progress click reentry through remove cannot continue an obsolete seek",
"engine": "webkit"
},
{
"file": "progress-quality.spec.js",
"title": "published: progress click reentry through destroy cannot continue an obsolete seek",
"engine": "webkit"
},
{
"file": "progress-quality.spec.js",
"title": "published: progress click reentry through source cannot continue an obsolete seek",
"engine": "webkit"
},
{
"file": "progress-quality.spec.js",
"title": "published: real progress click keeps setBar before seek and clamps the edges",
"engine": "webkit"
},
{
"file": "progress-quality.spec.js",
"title": "published: a progress drag ends when its source is replaced and can restart on the new source",
"engine": "webkit"
},
{
"file": "progress-quality.spec.js",
"title": "published: a caller-owned media Blob URL remains readable after switching and destroying the player",
"engine": "webkit"
},
{
"file": "progress-quality.spec.js",
"title": "published: quality selectors retain default labels, source position and empty-array behavior",
"engine": "webkit"
},
{
"file": "progress-quality.spec.js",
"title": "candidate: progress click reentry through remove cannot continue an obsolete seek",
"engine": "webkit"
},
{
"file": "progress-quality.spec.js",
"title": "candidate: progress click reentry through destroy cannot continue an obsolete seek",
"engine": "webkit"
},
{
"file": "progress-quality.spec.js",
"title": "candidate: progress click reentry through source cannot continue an obsolete seek",
"engine": "webkit"
},
{
"file": "progress-quality.spec.js",
"title": "candidate: real progress click keeps setBar before seek and clamps the edges",
"engine": "webkit"
},
{
"file": "progress-quality.spec.js",
"title": "candidate: a progress drag ends when its source is replaced and can restart on the new source",
"engine": "webkit"
},
{
"file": "progress-quality.spec.js",
"title": "candidate: a caller-owned media Blob URL remains readable after switching and destroying the player",
"engine": "webkit"
},
{
"file": "progress-quality.spec.js",
"title": "candidate: quality selectors retain default labels, source position and empty-array behavior",
"engine": "webkit"
},
{
"file": "prompt-components.spec.js",
"title": "published: mask preserves observations before and after its destroy handler",
"engine": "chromium"
},
{
"file": "prompt-components.spec.js",
"title": "published: info preserves fields, native media text and close visibility",
"engine": "chromium"
},
{
"file": "prompt-components.spec.js",
"title": "published: info retains native nullable string conversion for custom media fields",
"engine": "chromium"
},
{
"file": "prompt-components.spec.js",
"title": "published: repeated info init owns only one new timer and close handler",
"engine": "chromium"
},
{
"file": "prompt-components.spec.js",
"title": "published: info mobile construction waits for an explicit init",
"engine": "chromium"
},
{
"file": "prompt-components.spec.js",
"title": "published: mask click plays native video and destruction displays the terminal icon",
"engine": "chromium"
},
{
"file": "prompt-components.spec.js",
"title": "candidate: mask preserves observations before and after its destroy handler",
"engine": "chromium"
},
{
"file": "prompt-components.spec.js",
"title": "candidate: info preserves fields, native media text and close visibility",
"engine": "chromium"
},
{
"file": "prompt-components.spec.js",
"title": "candidate: info retains native nullable string conversion for custom media fields",
"engine": "chromium"
},
{
"file": "prompt-components.spec.js",
"title": "candidate: repeated info init owns only one new timer and close handler",
"engine": "chromium"
},
{
"file": "prompt-components.spec.js",
"title": "candidate: info mobile construction waits for an explicit init",
"engine": "chromium"
},
{
"file": "prompt-components.spec.js",
"title": "candidate: mask click plays native video and destruction displays the terminal icon",
"engine": "chromium"
},
{
"file": "prompt-components.spec.js",
"title": "candidate: info destruction during a media getter prevents text writes and late init",
"engine": "chromium"
},
{
"file": "prompt-components.spec.js",
"title": "candidate: reentrant info text conversion cannot write after player destruction",
"engine": "chromium"
},
{
"file": "prompt-components.spec.js",
"title": "candidate: mask finalization follows an earlier throwing observer without replacing its error",
"engine": "chromium"
},
{
"file": "prompt-components.spec.js",
"title": "published: mask preserves observations before and after its destroy handler",
"engine": "firefox"
},
{
"file": "prompt-components.spec.js",
"title": "published: info preserves fields, native media text and close visibility",
"engine": "firefox"
},
{
"file": "prompt-components.spec.js",
"title": "published: info retains native nullable string conversion for custom media fields",
"engine": "firefox"
},
{
"file": "prompt-components.spec.js",
"title": "published: repeated info init owns only one new timer and close handler",
"engine": "firefox"
},
{
"file": "prompt-components.spec.js",
"title": "published: info mobile construction waits for an explicit init",
"engine": "firefox"
},
{
"file": "prompt-components.spec.js",
"title": "published: mask click plays native video and destruction displays the terminal icon",
"engine": "firefox"
},
{
"file": "prompt-components.spec.js",
"title": "candidate: mask preserves observations before and after its destroy handler",
"engine": "firefox"
},
{
"file": "prompt-components.spec.js",
"title": "candidate: info preserves fields, native media text and close visibility",
"engine": "firefox"
},
{
"file": "prompt-components.spec.js",
"title": "candidate: info retains native nullable string conversion for custom media fields",
"engine": "firefox"
},
{
"file": "prompt-components.spec.js",
"title": "candidate: repeated info init owns only one new timer and close handler",
"engine": "firefox"
},
{
"file": "prompt-components.spec.js",
"title": "candidate: info mobile construction waits for an explicit init",
"engine": "firefox"
},
{
"file": "prompt-components.spec.js",
"title": "candidate: mask click plays native video and destruction displays the terminal icon",
"engine": "firefox"
},
{
"file": "prompt-components.spec.js",
"title": "candidate: info destruction during a media getter prevents text writes and late init",
"engine": "firefox"
},
{
"file": "prompt-components.spec.js",
"title": "candidate: reentrant info text conversion cannot write after player destruction",
"engine": "firefox"
},
{
"file": "prompt-components.spec.js",
"title": "candidate: mask finalization follows an earlier throwing observer without replacing its error",
"engine": "firefox"
},
{
"file": "prompt-components.spec.js",
"title": "published: mask preserves observations before and after its destroy handler",
"engine": "webkit"
},
{
"file": "prompt-components.spec.js",
"title": "published: info preserves fields, native media text and close visibility",
"engine": "webkit"
},
{
"file": "prompt-components.spec.js",
"title": "published: info retains native nullable string conversion for custom media fields",
"engine": "webkit"
},
{
"file": "prompt-components.spec.js",
"title": "published: repeated info init owns only one new timer and close handler",
"engine": "webkit"
},
{
"file": "prompt-components.spec.js",
"title": "published: info mobile construction waits for an explicit init",
"engine": "webkit"
},
{
"file": "prompt-components.spec.js",
"title": "published: mask click plays native video and destruction displays the terminal icon",
"engine": "webkit"
},
{
"file": "prompt-components.spec.js",
"title": "candidate: mask preserves observations before and after its destroy handler",
"engine": "webkit"
},
{
"file": "prompt-components.spec.js",
"title": "candidate: info preserves fields, native media text and close visibility",
"engine": "webkit"
},
{
"file": "prompt-components.spec.js",
"title": "candidate: info retains native nullable string conversion for custom media fields",
"engine": "webkit"
},
{
"file": "prompt-components.spec.js",
"title": "candidate: repeated info init owns only one new timer and close handler",
"engine": "webkit"
},
{
"file": "prompt-components.spec.js",
"title": "candidate: info mobile construction waits for an explicit init",
"engine": "webkit"
},
{
"file": "prompt-components.spec.js",
"title": "candidate: mask click plays native video and destruction displays the terminal icon",
"engine": "webkit"
},
{
"file": "prompt-components.spec.js",
"title": "candidate: info destruction during a media getter prevents text writes and late init",
"engine": "webkit"
},
{
"file": "prompt-components.spec.js",
"title": "candidate: reentrant info text conversion cannot write after player destruction",
"engine": "webkit"
},
{
"file": "prompt-components.spec.js",
"title": "candidate: mask finalization follows an earlier throwing observer without replacing its error",
"engine": "webkit"
},
{
"file": "setting-interaction.spec.js",
"title": "published: native setting keyboard and pointer actions retain range and switch callbacks",
"engine": "chromium"
},
{
"file": "setting-interaction.spec.js",
"title": "published: long setting labels leave native controls inside the row",
"engine": "chromium"
},
{
"file": "setting-interaction.spec.js",
"title": "candidate: native setting keyboard and pointer actions retain range and switch callbacks",
"engine": "chromium"
},
{
"file": "setting-interaction.spec.js",
"title": "candidate: long setting labels leave native controls inside the row",
"engine": "chromium"
},
{
"file": "setting-interaction.spec.js",
"title": "published: native setting keyboard and pointer actions retain range and switch callbacks",
"engine": "firefox"
},
{
"file": "setting-interaction.spec.js",
"title": "published: long setting labels leave native controls inside the row",
"engine": "firefox"
},
{
"file": "setting-interaction.spec.js",
"title": "candidate: native setting keyboard and pointer actions retain range and switch callbacks",
"engine": "firefox"
},
{
"file": "setting-interaction.spec.js",
"title": "candidate: long setting labels leave native controls inside the row",
"engine": "firefox"
},
{
"file": "setting-interaction.spec.js",
"title": "published: native setting keyboard and pointer actions retain range and switch callbacks",
"engine": "webkit"
},
{
"file": "setting-interaction.spec.js",
"title": "published: long setting labels leave native controls inside the row",
"engine": "webkit"
},
{
"file": "setting-interaction.spec.js",
"title": "candidate: native setting keyboard and pointer actions retain range and switch callbacks",
"engine": "webkit"
},
{
"file": "setting-interaction.spec.js",
"title": "candidate: long setting labels leave native controls inside the row",
"engine": "webkit"
},
{
"file": "setting-interaction.spec.js",
"title": "candidate: nested settings remain selectable with autoOrientation=false",
"engine": "chromium"
},
{
"file": "setting-interaction.spec.js",
"title": "candidate: nested settings remain selectable with autoOrientation=true",
"engine": "chromium"
},
{
"file": "setting-interaction.spec.js",
"title": "candidate: nested settings remain selectable with autoOrientation=false",
"engine": "firefox"
},
{
"file": "setting-interaction.spec.js",
"title": "candidate: nested settings remain selectable with autoOrientation=true",
"engine": "firefox"
},
{
"file": "setting-interaction.spec.js",
"title": "candidate: nested settings remain selectable with autoOrientation=false",
"engine": "webkit"
},
{
"file": "setting-interaction.spec.js",
"title": "candidate: nested settings remain selectable with autoOrientation=true",
"engine": "webkit"
},
{
"file": "setting-ownership.spec.js",
"title": "candidate: cached panel failure preserves navigation after failure",
"engine": "chromium"
},
{
"file": "setting-ownership.spec.js",
"title": "candidate: cached panel failure preserves navigation after navigate",
"engine": "chromium"
},
{
"file": "setting-ownership.spec.js",
"title": "candidate: cached panel failure preserves navigation after remove",
"engine": "chromium"
},
{
"file": "setting-ownership.spec.js",
"title": "candidate: cached panel failure preserves navigation after destroy",
"engine": "chromium"
},
{
"file": "setting-ownership.spec.js",
"title": "published: sharing an active setting has an explicit ownership baseline",
"engine": "chromium"
},
{
"file": "setting-ownership.spec.js",
"title": "candidate: sharing an active setting has an explicit ownership baseline",
"engine": "chromium"
},
{
"file": "setting-ownership.spec.js",
"title": "candidate: a setting subtree can move to another instance after remove",
"engine": "chromium"
},
{
"file": "setting-ownership.spec.js",
"title": "candidate: a setting subtree can move to another instance after destroy",
"engine": "chromium"
},
{
"file": "setting-ownership.spec.js",
"title": "candidate: cached panel failure preserves navigation after failure",
"engine": "firefox"
},
{
"file": "setting-ownership.spec.js",
"title": "candidate: cached panel failure preserves navigation after navigate",
"engine": "firefox"
},
{
"file": "setting-ownership.spec.js",
"title": "candidate: cached panel failure preserves navigation after remove",
"engine": "firefox"
},
{
"file": "setting-ownership.spec.js",
"title": "candidate: cached panel failure preserves navigation after destroy",
"engine": "firefox"
},
{
"file": "setting-ownership.spec.js",
"title": "published: sharing an active setting has an explicit ownership baseline",
"engine": "firefox"
},
{
"file": "setting-ownership.spec.js",
"title": "candidate: sharing an active setting has an explicit ownership baseline",
"engine": "firefox"
},
{
"file": "setting-ownership.spec.js",
"title": "candidate: a setting subtree can move to another instance after remove",
"engine": "firefox"
},
{
"file": "setting-ownership.spec.js",
"title": "candidate: a setting subtree can move to another instance after destroy",
"engine": "firefox"
},
{
"file": "setting-ownership.spec.js",
"title": "candidate: cached panel failure preserves navigation after failure",
"engine": "webkit"
},
{
"file": "setting-ownership.spec.js",
"title": "candidate: cached panel failure preserves navigation after navigate",
"engine": "webkit"
},
{
"file": "setting-ownership.spec.js",
"title": "candidate: cached panel failure preserves navigation after remove",
"engine": "webkit"
},
{
"file": "setting-ownership.spec.js",
"title": "candidate: cached panel failure preserves navigation after destroy",
"engine": "webkit"
},
{
"file": "setting-ownership.spec.js",
"title": "published: sharing an active setting has an explicit ownership baseline",
"engine": "webkit"
},
{
"file": "setting-ownership.spec.js",
"title": "candidate: sharing an active setting has an explicit ownership baseline",
"engine": "webkit"
},
{
"file": "setting-ownership.spec.js",
"title": "candidate: a setting subtree can move to another instance after remove",
"engine": "webkit"
},
{
"file": "setting-ownership.spec.js",
"title": "candidate: a setting subtree can move to another instance after destroy",
"engine": "webkit"
},
{
"file": "setting-update.spec.js",
"title": "candidate: setting update restores the original range row after assign failure",
"engine": "chromium"
},
{
"file": "setting-update.spec.js",
"title": "candidate: setting update restores the original range row after format failure",
"engine": "chromium"
},
{
"file": "setting-update.spec.js",
"title": "candidate: setting update restores the original range row after item failure",
"engine": "chromium"
},
{
"file": "setting-update.spec.js",
"title": "candidate: setting update restores the original range row after render failure",
"engine": "chromium"
},
{
"file": "setting-update.spec.js",
"title": "candidate: failed switch updates restore the original closure and displayed icon",
"engine": "chromium"
},
{
"file": "setting-update.spec.js",
"title": "candidate: reentrant update supersedes an unfinished setting update",
"engine": "chromium"
},
{
"file": "setting-update.spec.js",
"title": "candidate: reentrant remove supersedes an unfinished setting update",
"engine": "chromium"
},
{
"file": "setting-update.spec.js",
"title": "candidate: reentrant destroy supersedes an unfinished setting update",
"engine": "chromium"
},
{
"file": "setting-update.spec.js",
"title": "candidate: reentrant child-update supersedes an unfinished setting update",
"engine": "chromium"
},
{
"file": "setting-update.spec.js",
"title": "candidate: reentry inside a render getter retains the winning row with throwing=false",
"engine": "chromium"
},
{
"file": "setting-update.spec.js",
"title": "candidate: reentry inside a render getter retains the winning row with throwing=true",
"engine": "chromium"
},
{
"file": "setting-update.spec.js",
"title": "candidate: removing an ancestor cancels its pending descendant update",
"engine": "chromium"
},
{
"file": "setting-update.spec.js",
"title": "candidate: a reentrant switch getter cannot replace the winning control handles",
"engine": "chromium"
},
{
"file": "setting-update.spec.js",
"title": "candidate: a reentrant range getter cannot replace the winning control handles",
"engine": "chromium"
},
{
"file": "setting-update.spec.js",
"title": "candidate: a failed outer add preserves a reentrant add of the same object",
"engine": "chromium"
},
{
"file": "setting-update.spec.js",
"title": "candidate: a failed outer add preserves a reentrant update of the same object",
"engine": "chromium"
},
{
"file": "setting-update.spec.js",
"title": "candidate: setting update restores the original range row after assign failure",
"engine": "firefox"
},
{
"file": "setting-update.spec.js",
"title": "candidate: setting update restores the original range row after format failure",
"engine": "firefox"
},
{
"file": "setting-update.spec.js",
"title": "candidate: setting update restores the original range row after item failure",
"engine": "firefox"
},
{
"file": "setting-update.spec.js",
"title": "candidate: setting update restores the original range row after render failure",
"engine": "firefox"
},
{
"file": "setting-update.spec.js",
"title": "candidate: failed switch updates restore the original closure and displayed icon",
"engine": "firefox"
},
{
"file": "setting-update.spec.js",
"title": "candidate: reentrant update supersedes an unfinished setting update",
"engine": "firefox"
},
{
"file": "setting-update.spec.js",
"title": "candidate: reentrant remove supersedes an unfinished setting update",
"engine": "firefox"
},
{
"file": "setting-update.spec.js",
"title": "candidate: reentrant destroy supersedes an unfinished setting update",
"engine": "firefox"
},
{
"file": "setting-update.spec.js",
"title": "candidate: reentrant child-update supersedes an unfinished setting update",
"engine": "firefox"
},
{
"file": "setting-update.spec.js",
"title": "candidate: reentry inside a render getter retains the winning row with throwing=false",
"engine": "firefox"
},
{
"file": "setting-update.spec.js",
"title": "candidate: reentry inside a render getter retains the winning row with throwing=true",
"engine": "firefox"
},
{
"file": "setting-update.spec.js",
"title": "candidate: removing an ancestor cancels its pending descendant update",
"engine": "firefox"
},
{
"file": "setting-update.spec.js",
"title": "candidate: a reentrant switch getter cannot replace the winning control handles",
"engine": "firefox"
},
{
"file": "setting-update.spec.js",
"title": "candidate: a reentrant range getter cannot replace the winning control handles",
"engine": "firefox"
},
{
"file": "setting-update.spec.js",
"title": "candidate: a failed outer add preserves a reentrant add of the same object",
"engine": "firefox"
},
{
"file": "setting-update.spec.js",
"title": "candidate: a failed outer add preserves a reentrant update of the same object",
"engine": "firefox"
},
{
"file": "setting-update.spec.js",
"title": "candidate: setting update restores the original range row after assign failure",
"engine": "webkit"
},
{
"file": "setting-update.spec.js",
"title": "candidate: setting update restores the original range row after format failure",
"engine": "webkit"
},
{
"file": "setting-update.spec.js",
"title": "candidate: setting update restores the original range row after item failure",
"engine": "webkit"
},
{
"file": "setting-update.spec.js",
"title": "candidate: setting update restores the original range row after render failure",
"engine": "webkit"
},
{
"file": "setting-update.spec.js",
"title": "candidate: failed switch updates restore the original closure and displayed icon",
"engine": "webkit"
},
{
"file": "setting-update.spec.js",
"title": "candidate: reentrant update supersedes an unfinished setting update",
"engine": "webkit"
},
{
"file": "setting-update.spec.js",
"title": "candidate: reentrant remove supersedes an unfinished setting update",
"engine": "webkit"
},
{
"file": "setting-update.spec.js",
"title": "candidate: reentrant destroy supersedes an unfinished setting update",
"engine": "webkit"
},
{
"file": "setting-update.spec.js",
"title": "candidate: reentrant child-update supersedes an unfinished setting update",
"engine": "webkit"
},
{
"file": "setting-update.spec.js",
"title": "candidate: reentry inside a render getter retains the winning row with throwing=false",
"engine": "webkit"
},
{
"file": "setting-update.spec.js",
"title": "candidate: reentry inside a render getter retains the winning row with throwing=true",
"engine": "webkit"
},
{
"file": "setting-update.spec.js",
"title": "candidate: removing an ancestor cancels its pending descendant update",
"engine": "webkit"
},
{
"file": "setting-update.spec.js",
"title": "candidate: a reentrant switch getter cannot replace the winning control handles",
"engine": "webkit"
},
{
"file": "setting-update.spec.js",
"title": "candidate: a reentrant range getter cannot replace the winning control handles",
"engine": "webkit"
},
{
"file": "setting-update.spec.js",
"title": "candidate: a failed outer add preserves a reentrant add of the same object",
"engine": "webkit"
},
{
"file": "setting-update.spec.js",
"title": "candidate: a failed outer add preserves a reentrant update of the same object",
"engine": "webkit"
},
{
"file": "setting.spec.js",
"title": "published: builtin setting subscriptions are replaced and removed with their row",
"engine": "chromium"
},
{
"file": "setting.spec.js",
"title": "published: deferred setting mounts belong to the rendered item generation",
"engine": "chromium"
},
{
"file": "setting.spec.js",
"title": "published: removed setting subtrees release child listeners and cached panels",
"engine": "chromium"
},
{
"file": "setting.spec.js",
"title": "published: setting button results cannot overwrite an updated or newer item",
"engine": "chromium"
},
{
"file": "setting.spec.js",
"title": "published: sibling setting selections share the parent result generation",
"engine": "chromium"
},
{
"file": "setting.spec.js",
"title": "published: setting callback rejection retains its original failure identity",
"engine": "chromium"
},
{
"file": "setting.spec.js",
"title": "published: a wide nested setting panel fits the narrow player and remains selectable",
"engine": "chromium"
},
{
"file": "setting.spec.js",
"title": "published: setting registry retains item returns and hidden tree bindings",
"engine": "chromium"
},
{
"file": "setting.spec.js",
"title": "published: moved setting items bind to their current parent and panel",
"engine": "chromium"
},
{
"file": "setting.spec.js",
"title": "published: automatic setting names and explicit nested names have an explicit baseline",
"engine": "chromium"
},
{
"file": "setting.spec.js",
"title": "candidate: builtin setting subscriptions are replaced and removed with their row",
"engine": "chromium"
},
{
"file": "setting.spec.js",
"title": "candidate: deferred setting mounts belong to the rendered item generation",
"engine": "chromium"
},
{
"file": "setting.spec.js",
"title": "candidate: removed setting subtrees release child listeners and cached panels",
"engine": "chromium"
},
{
"file": "setting.spec.js",
"title": "candidate: setting button results cannot overwrite an updated or newer item",
"engine": "chromium"
},
{
"file": "setting.spec.js",
"title": "candidate: sibling setting selections share the parent result generation",
"engine": "chromium"
},
{
"file": "setting.spec.js",
"title": "candidate: setting callback rejection retains its original failure identity",
"engine": "chromium"
},
{
"file": "setting.spec.js",
"title": "candidate: a wide nested setting panel fits the narrow player and remains selectable",
"engine": "chromium"
},
{
"file": "setting.spec.js",
"title": "candidate: setting registry retains item returns and hidden tree bindings",
"engine": "chromium"
},
{
"file": "setting.spec.js",
"title": "candidate: moved setting items bind to their current parent and panel",
"engine": "chromium"
},
{
"file": "setting.spec.js",
"title": "candidate: automatic setting names and explicit nested names have an explicit baseline",
"engine": "chromium"
},
{
"file": "setting.spec.js",
"title": "candidate: open settings follow container and control height changes with fallback=false",
"engine": "chromium"
},
{
"file": "setting.spec.js",
"title": "candidate: open settings follow container and control height changes with fallback=true",
"engine": "chromium"
},
{
"file": "setting.spec.js",
"title": "candidate: failed setting additions leave existing rows usable and allow retry",
"engine": "chromium"
},
{
"file": "setting.spec.js",
"title": "candidate: setting removal finishes DOM cleanup when the event-removal hook throws",
"engine": "chromium"
},
{
"file": "setting.spec.js",
"title": "candidate: failed header rendering releases its panel and restores reusable inputs",
"engine": "chromium"
},
{
"file": "setting.spec.js",
"title": "candidate: failed item rendering releases its panel and restores reusable inputs",
"engine": "chromium"
},
{
"file": "setting.spec.js",
"title": "candidate: failed layout rendering releases its panel and restores reusable inputs",
"engine": "chromium"
},
{
"file": "setting.spec.js",
"title": "candidate: panel creation stops after reentrant remove",
"engine": "chromium"
},
{
"file": "setting.spec.js",
"title": "candidate: panel creation stops after reentrant destroy",
"engine": "chromium"
},
{
"file": "setting.spec.js",
"title": "published: builtin setting subscriptions are replaced and removed with their row",
"engine": "firefox"
},
{
"file": "setting.spec.js",
"title": "published: deferred setting mounts belong to the rendered item generation",
"engine": "firefox"
},
{
"file": "setting.spec.js",
"title": "published: removed setting subtrees release child listeners and cached panels",
"engine": "firefox"
},
{
"file": "setting.spec.js",
"title": "published: setting button results cannot overwrite an updated or newer item",
"engine": "firefox"
},
{
"file": "setting.spec.js",
"title": "published: sibling setting selections share the parent result generation",
"engine": "firefox"
},
{
"file": "setting.spec.js",
"title": "published: setting callback rejection retains its original failure identity",
"engine": "firefox"
},
{
"file": "setting.spec.js",
"title": "published: a wide nested setting panel fits the narrow player and remains selectable",
"engine": "firefox"
},
{
"file": "setting.spec.js",
"title": "published: setting registry retains item returns and hidden tree bindings",
"engine": "firefox"
},
{
"file": "setting.spec.js",
"title": "published: moved setting items bind to their current parent and panel",
"engine": "firefox"
},
{
"file": "setting.spec.js",
"title": "published: automatic setting names and explicit nested names have an explicit baseline",
"engine": "firefox"
},
{
"file": "setting.spec.js",
"title": "candidate: builtin setting subscriptions are replaced and removed with their row",
"engine": "firefox"
},
{
"file": "setting.spec.js",
"title": "candidate: deferred setting mounts belong to the rendered item generation",
"engine": "firefox"
},
{
"file": "setting.spec.js",
"title": "candidate: removed setting subtrees release child listeners and cached panels",
"engine": "firefox"
},
{
"file": "setting.spec.js",
"title": "candidate: setting button results cannot overwrite an updated or newer item",
"engine": "firefox"
},
{
"file": "setting.spec.js",
"title": "candidate: sibling setting selections share the parent result generation",
"engine": "firefox"
},
{
"file": "setting.spec.js",
"title": "candidate: setting callback rejection retains its original failure identity",
"engine": "firefox"
},
{
"file": "setting.spec.js",
"title": "candidate: a wide nested setting panel fits the narrow player and remains selectable",
"engine": "firefox"
},
{
"file": "setting.spec.js",
"title": "candidate: setting registry retains item returns and hidden tree bindings",
"engine": "firefox"
},
{
"file": "setting.spec.js",
"title": "candidate: moved setting items bind to their current parent and panel",
"engine": "firefox"
},
{
"file": "setting.spec.js",
"title": "candidate: automatic setting names and explicit nested names have an explicit baseline",
"engine": "firefox"
},
{
"file": "setting.spec.js",
"title": "candidate: open settings follow container and control height changes with fallback=false",
"engine": "firefox"
},
{
"file": "setting.spec.js",
"title": "candidate: open settings follow container and control height changes with fallback=true",
"engine": "firefox"
},
{
"file": "setting.spec.js",
"title": "candidate: failed setting additions leave existing rows usable and allow retry",
"engine": "firefox"
},
{
"file": "setting.spec.js",
"title": "candidate: setting removal finishes DOM cleanup when the event-removal hook throws",
"engine": "firefox"
},
{
"file": "setting.spec.js",
"title": "candidate: failed header rendering releases its panel and restores reusable inputs",
"engine": "firefox"
},
{
"file": "setting.spec.js",
"title": "candidate: failed item rendering releases its panel and restores reusable inputs",
"engine": "firefox"
},
{
"file": "setting.spec.js",
"title": "candidate: failed layout rendering releases its panel and restores reusable inputs",
"engine": "firefox"
},
{
"file": "setting.spec.js",
"title": "candidate: panel creation stops after reentrant remove",
"engine": "firefox"
},
{
"file": "setting.spec.js",
"title": "candidate: panel creation stops after reentrant destroy",
"engine": "firefox"
},
{
"file": "setting.spec.js",
"title": "published: builtin setting subscriptions are replaced and removed with their row",
"engine": "webkit"
},
{
"file": "setting.spec.js",
"title": "published: deferred setting mounts belong to the rendered item generation",
"engine": "webkit"
},
{
"file": "setting.spec.js",
"title": "published: removed setting subtrees release child listeners and cached panels",
"engine": "webkit"
},
{
"file": "setting.spec.js",
"title": "published: setting button results cannot overwrite an updated or newer item",
"engine": "webkit"
},
{
"file": "setting.spec.js",
"title": "published: sibling setting selections share the parent result generation",
"engine": "webkit"
},
{
"file": "setting.spec.js",
"title": "published: setting callback rejection retains its original failure identity",
"engine": "webkit"
},
{
"file": "setting.spec.js",
"title": "published: a wide nested setting panel fits the narrow player and remains selectable",
"engine": "webkit"
},
{
"file": "setting.spec.js",
"title": "published: setting registry retains item returns and hidden tree bindings",
"engine": "webkit"
},
{
"file": "setting.spec.js",
"title": "published: moved setting items bind to their current parent and panel",
"engine": "webkit"
},
{
"file": "setting.spec.js",
"title": "published: automatic setting names and explicit nested names have an explicit baseline",
"engine": "webkit"
},
{
"file": "setting.spec.js",
"title": "candidate: builtin setting subscriptions are replaced and removed with their row",
"engine": "webkit"
},
{
"file": "setting.spec.js",
"title": "candidate: deferred setting mounts belong to the rendered item generation",
"engine": "webkit"
},
{
"file": "setting.spec.js",
"title": "candidate: removed setting subtrees release child listeners and cached panels",
"engine": "webkit"
},
{
"file": "setting.spec.js",
"title": "candidate: setting button results cannot overwrite an updated or newer item",
"engine": "webkit"
},
{
"file": "setting.spec.js",
"title": "candidate: sibling setting selections share the parent result generation",
"engine": "webkit"
},
{
"file": "setting.spec.js",
"title": "candidate: setting callback rejection retains its original failure identity",
"engine": "webkit"
},
{
"file": "setting.spec.js",
"title": "candidate: a wide nested setting panel fits the narrow player and remains selectable",
"engine": "webkit"
},
{
"file": "setting.spec.js",
"title": "candidate: setting registry retains item returns and hidden tree bindings",
"engine": "webkit"
},
{
"file": "setting.spec.js",
"title": "candidate: moved setting items bind to their current parent and panel",
"engine": "webkit"
},
{
"file": "setting.spec.js",
"title": "candidate: automatic setting names and explicit nested names have an explicit baseline",
"engine": "webkit"
},
{
"file": "setting.spec.js",
"title": "candidate: open settings follow container and control height changes with fallback=false",
"engine": "webkit"
},
{
"file": "setting.spec.js",
"title": "candidate: open settings follow container and control height changes with fallback=true",
"engine": "webkit"
},
{
"file": "setting.spec.js",
"title": "candidate: failed setting additions leave existing rows usable and allow retry",
"engine": "webkit"
},
{
"file": "setting.spec.js",
"title": "candidate: setting removal finishes DOM cleanup when the event-removal hook throws",
"engine": "webkit"
},
{
"file": "setting.spec.js",
"title": "candidate: failed header rendering releases its panel and restores reusable inputs",
"engine": "webkit"
},
{
"file": "setting.spec.js",
"title": "candidate: failed item rendering releases its panel and restores reusable inputs",
"engine": "webkit"
},
{
"file": "setting.spec.js",
"title": "candidate: failed layout rendering releases its panel and restores reusable inputs",
"engine": "webkit"
},
{
"file": "setting.spec.js",
"title": "candidate: panel creation stops after reentrant remove",
"engine": "webkit"
},
{
"file": "setting.spec.js",
"title": "candidate: panel creation stops after reentrant destroy",
"engine": "webkit"
}
],
"reportSha256": "9a889ee97e2572efc283f79d67bdb6c754d6dd0efb2c2dd91620131b6866985e"
},
"probes": [
{
"name": "core23-control-focus-before",
"stats": {
"startTime": "2026-09-11T11:35:32.389Z",
"duration": 18344.592,
"expected": 1,
"skipped": 0,
"unexpected": 5,
"flaky": 0
},
"reportSha256": "c5158b5bd678473d60983fc85b9e331a6ee68186fea560debe40134452c9c483",
"failures": [
{
"title": "candidate: replacing a focused control restores its new entry without intermediate focus",
"engine": "chromium",
"errors": [
"Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeFocused\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.art-control-first')\nExpected: focused\nReceived: inactive\nTimeout: 7000ms\n\nCall log:\n\u001b[2m - Expect \"toBeFocused\" locator('.art-control-first') with timeout 7000ms\u001b[22m\n\u001b[2m - waiting for locator('.art-control-first')\u001b[22m\n\u001b[2m 18 × locator resolved to <div tabindex=\"0\" role=\"button\" data-index=\"10\" class=\"art-control art-control-first\">Updated</div>\u001b[22m\n\u001b[2m - unexpected value \"inactive\"\u001b[22m\n\n\n 34 | })\n 35 | expect(result).toBeUndefined()\n> 36 | await expect(control(page, 'first')).toBeFocused()\n | ^\n 37 | expect(await page.evaluate(() => window.focusOrder)).toEqual(['art-control art-control-first'])\n 38 | await page.keyboard.press('Space')\n 39 | expect(await page.evaluate(() => window.focusCalls)).toEqual([['first', true, true, 'click']])\n at D:\\github\\ArtPlayer\\test\\browser\\accessibility-controls.spec.js:36:40"
]
},
{
"title": "candidate: removing a focused control chooses a surviving neighbor and preserves external focus",
"engine": "chromium",
"errors": [
"Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeFocused\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.art-control-second')\nExpected: focused\nReceived: inactive\nTimeout: 7000ms\n\nCall log:\n\u001b[2m - Expect \"toBeFocused\" locator('.art-control-second') with timeout 7000ms\u001b[22m\n\u001b[2m - waiting for locator('.art-control-second')\u001b[22m\n\u001b[2m 18 × locator resolved to <div tabindex=\"0\" role=\"button\" data-index=\"11\" class=\"art-control art-control-second\">second</div>\u001b[22m\n\u001b[2m - unexpected value \"inactive\"\u001b[22m\n\n\n 44 | await control(page, 'first').focus()\n 45 | await page.evaluate(() => window.art.controls.remove('first'))\n> 46 | await expect(control(page, 'second')).toBeFocused()\n | ^\n 47 | await control(page, 'third').focus()\n 48 | await page.evaluate(() => window.art.controls.remove('third'))\n 49 | await expect(control(page, 'second')).toBeFocused()\n at D:\\github\\ArtPlayer\\test\\browser\\accessibility-controls.spec.js:46:41"
]
},
{
"title": "candidate: failed control replacement recovers focus but a veto keeps the original focused entry",
"engine": "chromium",
"errors": [
"Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeFocused\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.art-control-second')\nExpected: focused\nReceived: inactive\nTimeout: 7000ms\n\nCall log:\n\u001b[2m - Expect \"toBeFocused\" locator('.art-control-second') with timeout 7000ms\u001b[22m\n\u001b[2m - waiting for locator('.art-control-second')\u001b[22m\n\u001b[2m 18 × locator resolved to <div tabindex=\"0\" role=\"button\" data-index=\"11\" class=\"art-control art-control-second\">second</div>\u001b[22m\n\u001b[2m - unexpected value \"inactive\"\u001b[22m\n\n\n 62 | catch (error) { return error.message }\n 63 | })).toBe('mount failed')\n> 64 | await expect(control(page, 'second')).toBeFocused()\n | ^\n 65 | expect(await page.evaluate(() => {\n 66 | try {\n 67 | window.art.controls.update({ name: 'second', beforeUnmount() { throw new Error('veto') } })\n at D:\\github\\ArtPlayer\\test\\browser\\accessibility-controls.spec.js:64:41"
]
},
{
"title": "candidate: replacing a focused selector option transfers focus to the new control",
"engine": "chromium",
"errors": [
"Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeFocused\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.art-control-first')\nExpected: focused\nReceived: inactive\nTimeout: 7000ms\n\nCall log:\n\u001b[2m - Expect \"toBeFocused\" locator('.art-control-first') with timeout 7000ms\u001b[22m\n\u001b[2m - waiting for locator('.art-control-first')\u001b[22m\n\u001b[2m 18 × locator resolved to <div tabindex=\"0\" role=\"button\" data-index=\"10\" class=\"art-control art-control-first\">Button</div>\u001b[22m\n\u001b[2m - unexpected value \"inactive\"\u001b[22m\n\n\n 94 | await expect(control(page, 'first').locator('.art-selector-item').first()).toBeFocused()\n 95 | await page.evaluate(() => window.art.controls.update({ name: 'first', selector: undefined, html: 'Button', click() {} }))\n> 96 | await expect(control(page, 'first')).toBeFocused()\n | ^\n 97 | })\n 98 |\n 99 | test('candidate: removing the last focusable control leaves focus on the player without a permanent Tab stop', async ({ page }) => {\n at D:\\github\\ArtPlayer\\test\\browser\\accessibility-controls.spec.js:96:40"
]
},
{
"title": "candidate: removing the last focusable control leaves focus on the player without a permanent Tab stop",
"engine": "chromium",
"errors": [
"Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeFocused\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.art-video-player')\nExpected: focused\nReceived: inactive\nTimeout: 7000ms\n\nCall log:\n\u001b[2m - Expect \"toBeFocused\" locator('.art-video-player') with timeout 7000ms\u001b[22m\n\u001b[2m - waiting for locator('.art-video-player')\u001b[22m\n\u001b[2m 18 × locator resolved to <div class=\"art-video-player art-subtitle-show art-layer-show art-control-show art-backdrop art-hover art-mask-show\">…</div>\u001b[22m\n\u001b[2m - unexpected value \"inactive\"\u001b[22m\n\n\n 107 | await control(page, 'first').focus()\n 108 | await page.evaluate(() => window.art.controls.remove('first'))\n> 109 | await expect(page.locator('.art-video-player')).toBeFocused()\n | ^\n 110 | await expect(page.locator('.art-video-player')).not.toHaveAttribute('tabindex')\n 111 | })\n 112 |\n at D:\\github\\ArtPlayer\\test\\browser\\accessibility-controls.spec.js:109:51"
]
}
]
},
{
"name": "core23-control-focus-first",
"stats": {
"startTime": "2026-09-11T11:36:51.076Z",
"duration": 10440.235,
"expected": 5,
"skipped": 0,
"unexpected": 1,
"flaky": 0
},
"reportSha256": "c2db49f391c3495807b13adeb055876c64b6ba9f3b63b1bd929dff075aae542a",
"failures": [
{
"title": "candidate: removing the last focusable control leaves focus on the player without a permanent Tab stop",
"engine": "chromium",
"errors": [
"Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeFocused\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.art-video-player')\nExpected: focused\nReceived: inactive\nTimeout: 7000ms\n\nCall log:\n\u001b[2m - Expect \"toBeFocused\" locator('.art-video-player') with timeout 7000ms\u001b[22m\n\u001b[2m - waiting for locator('.art-video-player')\u001b[22m\n\u001b[2m 18 × locator resolved to <div class=\"art-video-player art-subtitle-show art-layer-show art-control-show art-backdrop art-hover art-mask-show\">…</div>\u001b[22m\n\u001b[2m - unexpected value \"inactive\"\u001b[22m\n\n\n 107 | await control(page, 'first').focus()\n 108 | await page.evaluate(() => window.art.controls.remove('first'))\n> 109 | await expect(page.locator('.art-video-player')).toBeFocused()\n | ^\n 110 | await expect(page.locator('.art-video-player')).not.toHaveAttribute('tabindex')\n 111 | })\n 112 |\n at D:\\github\\ArtPlayer\\test\\browser\\accessibility-controls.spec.js:109:51"
]
}
]
}
],
"remaining": [
"CORE-23 remains doing and BASE-DOM-01 open. No completed-task commit.",
"Remaining mode exit including mini/info/lock keyboard affordances, SSR/subtitle accessibility and whole-core acceptance still need work.",
"The dynamic-control suite now covers multi-instance focus isolation; this does not replace remaining whole-player cross-instance checks.",
"This is a Vite source build. Fresh installed modern/legacy artifacts and the full current browser matrix remain task-final gates.",
"Physical devices, screen readers and release reviews remain gates. No push, tag, merge or npm publication."
]
}