From 46e5cc0185a519da92632441be93fa97055cfbab Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN <53631862+PR0M3TH3AN@users.noreply.github.com> Date: Thu, 12 Feb 2026 10:37:53 -0500 Subject: [PATCH] update --- TEST_LOG.md | 10277 -------------------------------------------------- 1 file changed, 10277 deletions(-) delete mode 100644 TEST_LOG.md diff --git a/TEST_LOG.md b/TEST_LOG.md deleted file mode 100644 index a2be4053..00000000 --- a/TEST_LOG.md +++ /dev/null @@ -1,10277 +0,0 @@ -Node: v22.22.0 -NPM: 11.7.0 - -added 424 packages, and audited 425 packages in 13s - -108 packages are looking for funding - run `npm fund` for details - -found 0 vulnerabilities -npm notice -npm notice New minor version of npm available! 11.7.0 -> 11.10.0 -npm notice Changelog: https://github.com/npm/cli/releases/tag/v11.10.0 -npm notice To update run: npm install -g npm@11.10.0 -npm notice - -changed 2 packages, and audited 425 packages in 3s - -108 packages are looking for funding - run `npm fund` for details - -found 0 vulnerabilities -Running build... - -> bitvid@1.0.0 build -> node scripts/build-dist.mjs && npm run verify:dist:deploy-artifact - -Validating service worker compatibility guard... - -> bitvid@1.0.0 lint:sw-compat -> node scripts/check-sw-compat.mjs - -[sw-compat] Skipping check: unable to determine HEAD^ or git history unavailable. -[sw-compat] No commit delta found; skipping compatibility check. -Cleaning dist... -Running build:css... - -> bitvid@1.0.0 build:css -> postcss css/tailwind.source.css -o css/tailwind.generated.css - -Copying files... -Copying directories... -Generating hashed asset manifest... -Rewriting HTML entry points with hashed assets... -Injecting version hash and date... -Injected version: 6bb2d251 • 2026-02-12 -Build complete. - -> bitvid@1.0.0 verify:dist:deploy-artifact -> node scripts/verify-dist-deploy-artifact.mjs - -Deployment artifact verification passed: version markup and hashed asset references are present in dist/index.html. -Build exit code: 0 -Running lint... - -> bitvid@1.0.0 lint -> npm run lint:css && npm run lint:hex && npm run lint:inline-styles && npm run lint:tokens && npm run lint:tailwind-brackets && npm run lint:tailwind-colors && npm run lint:file-size && npm run lint:innerhtml && npm run lint:assets && npm run lint:sw-compat - - -> bitvid@1.0.0 lint:css -> stylelint css/tailwind.source.css css/tokens.css css/docs.css - - -> bitvid@1.0.0 lint:hex -> node scripts/check-hex.js - - -> bitvid@1.0.0 lint:inline-styles -> node scripts/check-inline-styles.mjs - -No inline style usage found. - -> bitvid@1.0.0 lint:tokens -> node scripts/check-design-tokens.mjs --check=tokens - - -> bitvid@1.0.0 lint:tailwind-brackets -> node scripts/check-design-tokens.mjs --check=brackets - - -> bitvid@1.0.0 lint:tailwind-colors -> node scripts/check-tailwind-colors.mjs - - -> bitvid@1.0.0 lint:file-size -> node scripts/check-file-size.mjs - - -> bitvid@1.0.0 lint:innerhtml -> node scripts/check-innerhtml.mjs - - -> bitvid@1.0.0 lint:assets -> node scripts/check-asset-references.mjs - -Asset reference lint passed: all local CSS/JS references are hashed or allowlisted, and no ?v= query cache-busting remains. - -> bitvid@1.0.0 lint:sw-compat -> node scripts/check-sw-compat.mjs - -[sw-compat] Skipping check: unable to determine HEAD^ or git history unavailable. -[sw-compat] No commit delta found; skipping compatibility check. -Lint exit code: 0 -Running unit tests... - -> bitvid@1.0.0 test:unit -> node scripts/run-unit-tests.mjs - - -→ Running tests/app-batch-fetch-profiles.test.mjs -TAP version 13 -# Subtest: batchFetchProfiles handles fast and failing relays -ok 1 - batchFetchProfiles handles fast and failing relays - --- - duration_ms: 13.99331 - type: 'test' - ... -# Subtest: batchFetchProfiles respects forceRefresh -ok 2 - batchFetchProfiles respects forceRefresh - --- - duration_ms: 302.053628 - type: 'test' - ... -1..2 -# tests 2 -# suites 0 -# pass 2 -# fail 0 -# cancelled 0 -# skipped 0 -# todo 0 -# duration_ms 365.991806 - -→ Running tests/app-state.test.mjs -TAP version 13 -# Subtest: AppState - # Subtest: Initial state is clean - ok 1 - Initial state is clean - --- - duration_ms: 2.312659 - type: 'test' - ... - # Subtest: setPubkey() updates state and notifies subscribers - ok 2 - setPubkey() updates state and notifies subscribers - --- - duration_ms: 0.944413 - type: 'test' - ... - # Subtest: setCurrentUserNpub() updates state - ok 3 - setCurrentUserNpub() updates state - --- - duration_ms: 0.396352 - type: 'test' - ... - # Subtest: setCurrentVideo() updates state - ok 4 - setCurrentVideo() updates state - --- - duration_ms: 0.571016 - type: 'test' - ... - # Subtest: setVideosMap() updates state - ok 5 - setVideosMap() updates state - --- - duration_ms: 0.585743 - type: 'test' - ... - # Subtest: setVideoSubscription() updates state - ok 6 - setVideoSubscription() updates state - --- - duration_ms: 0.330109 - type: 'test' - ... - # Subtest: setModalState() updates state and notifies modal subscribers - ok 7 - setModalState() updates state and notifies modal subscribers - --- - duration_ms: 0.894319 - type: 'test' - ... - # Subtest: Global subscriber receives updates - ok 8 - Global subscriber receives updates - --- - duration_ms: 0.626902 - type: 'test' - ... - # Subtest: resetAppState() clears all state and notifies - ok 9 - resetAppState() clears all state and notifies - --- - duration_ms: 0.838283 - type: 'test' - ... - 1..9 -ok 1 - AppState - --- - duration_ms: 9.802838 - type: 'suite' - ... -1..1 -# tests 9 -# suites 1 -# pass 9 -# fail 0 -# cancelled 0 -# skipped 0 -# todo 0 -# duration_ms 31.18024 - -→ Running tests/app/channel-profile-moderation.test.mjs -TAP version 13 -# Subtest: renderChannelVideosFromList decorates videos before storing -ok 1 - renderChannelVideosFromList decorates videos before storing - --- - duration_ms: 185.777956 - type: 'test' - ... -# Subtest: renderChannelVideosFromList applies moderation blur without existing metadata -ok 2 - renderChannelVideosFromList applies moderation blur without existing metadata - --- - duration_ms: 58.613302 - type: 'test' - ... -# Subtest: applyChannelVisualBlur blurs banner and avatar when viewer mutes author -ok 3 - applyChannelVisualBlur blurs banner and avatar when viewer mutes author - --- - duration_ms: 15.849535 - type: 'test' - ... -# Subtest: moderation override clears channel blur via event wiring -ok 4 - moderation override clears channel blur via event wiring - --- - duration_ms: 36.515733 - type: 'test' - ... -# Subtest: channel header moderation badge reflects blur state and override actions -ok 5 - channel header moderation badge reflects blur state and override actions - --- - duration_ms: 47.930491 - type: 'test' - ... -# Subtest: channel video cards update moderation state in place when summary changes -ok 6 - channel video cards update moderation state in place when summary changes - --- - duration_ms: 48.058873 - type: 'test' - ... -1..6 -# tests 6 -# suites 0 -# pass 6 -# fail 0 -# cancelled 0 -# skipped 0 -# todo 0 -# duration_ms 413.300296 - -→ Running tests/app/feedCoordinator.test.mjs -TAP version 13 -# Subtest: createFeedCoordinator - loadForYouVideos - # Subtest: loadForYouVideos executes successfully - ok 1 - loadForYouVideos executes successfully - --- - duration_ms: 2.465866 - type: 'test' - ... - 1..1 -ok 1 - createFeedCoordinator - loadForYouVideos - --- - duration_ms: 4.55921 - type: 'test' - ... -1..1 -# tests 2 -# suites 0 -# pass 2 -# fail 0 -# cancelled 0 -# skipped 0 -# todo 0 -# duration_ms 15.21591 - -→ Running tests/app/hash-change-handler.test.mjs -TAP version 13 -# Subtest: handleHashChange defaults to for-you when logged in -ok 1 - handleHashChange defaults to for-you when logged in - --- - duration_ms: 240.819883 - type: 'test' - ... -# Subtest: handleHashChange defaults to most-recent-videos when logged out -ok 2 - handleHashChange defaults to most-recent-videos when logged out - --- - duration_ms: 20.042627 - type: 'test' - ... -# Subtest: handleHashChange respects explicit view regardless of login state -ok 3 - handleHashChange respects explicit view regardless of login state - --- - duration_ms: 12.440924 - type: 'test' - ... -1..3 -# tests 3 -# suites 0 -# pass 3 -# fail 0 -# cancelled 0 -# skipped 0 -# todo 0 -# duration_ms 286.861711 - -→ Running tests/app/hydrate-sidebar-navigation.test.mjs -TAP version 13 -# Subtest: hydrateSidebarNavigation reveals chrome controls for authenticated viewers -ok 1 - hydrateSidebarNavigation reveals chrome controls for authenticated viewers - --- - duration_ms: 107.904014 - type: 'test' - ... -# Subtest: hydrateSidebarNavigation hides chrome controls for logged-out viewers -ok 2 - hydrateSidebarNavigation hides chrome controls for logged-out viewers - --- - duration_ms: 14.819112 - type: 'test' - ... -1..2 -# tests 2 -# suites 0 -# pass 2 -# fail 0 -# cancelled 0 -# skipped 0 -# todo 0 -# duration_ms 135.542735 - -→ Running tests/app/is-user-logged-in.test.mjs -TAP version 13 -# Subtest: isUserLoggedIn returns false when no user pubkey is set -ok 1 - isUserLoggedIn returns false when no user pubkey is set - --- - duration_ms: 1.40207 - type: 'test' - ... -# Subtest: isUserLoggedIn treats extension logins as authenticated -ok 2 - isUserLoggedIn treats extension logins as authenticated - --- - duration_ms: 0.332666 - type: 'test' - ... -# Subtest: isUserLoggedIn guards against mismatched nostrClient state -ok 3 - isUserLoggedIn guards against mismatched nostrClient state - --- - duration_ms: 0.222126 - type: 'test' - ... -# Subtest: isUserLoggedIn ignores anonymous session actor mismatches -ok 4 - isUserLoggedIn ignores anonymous session actor mismatches - --- - duration_ms: 0.300322 - type: 'test' - ... -# Subtest: isUserLoggedIn rejects mismatched managed session actors -ok 5 - isUserLoggedIn rejects mismatched managed session actors - --- - duration_ms: 0.330816 - type: 'test' - ... -1..5 -# tests 5 -# suites 0 -# pass 5 -# fail 0 -# cancelled 0 -# skipped 0 -# todo 0 -# duration_ms 32.161274 - -→ Running tests/app/moderation-overrides.test.mjs -TAP version 13 -# Subtest: handleModerationOverride decorates stored and current videos then refreshes UI -ok 1 - handleModerationOverride decorates stored and current videos then refreshes UI - --- - duration_ms: 5.979729 - type: 'test' - ... -# Subtest: handleModerationOverride resumes deferred playback -ok 2 - handleModerationOverride resumes deferred playback - --- - duration_ms: 1.337565 - type: 'test' - ... -# Subtest: handleModerationBlock requests a block, clears overrides, and refreshes hidden state -ok 3 - handleModerationBlock requests a block, clears overrides, and refreshes hidden state - --- - duration_ms: 4.307154 - type: 'test' - ... -# Subtest: handleModerationBlock returns false when viewer is logged out -ok 4 - handleModerationBlock returns false when viewer is logged out - --- - duration_ms: 1.098202 - type: 'test' - ... -1..4 -# tests 4 -# suites 0 -# pass 4 -# fail 0 -# cancelled 0 -# skipped 0 -# todo 0 -# duration_ms 28.643321 - -→ Running tests/app/moderation-settings-refresh.test.mjs -TAP version 13 -# Subtest: handleModerationSettingsChange refreshes feeds with updated thresholds -ok 1 - handleModerationSettingsChange refreshes feeds with updated thresholds - --- - duration_ms: 5.049885 - type: 'test' - ... -1..1 -# tests 1 -# suites 0 -# pass 1 -# fail 0 -# cancelled 0 -# skipped 0 -# todo 0 -# duration_ms 16.905125 - -→ Running tests/app/similar-content.test.mjs -TAP version 13 -# Subtest: orders similar videos by shared tags then timestamp -ok 1 - orders similar videos by shared tags then timestamp - --- - duration_ms: 3.272602 - type: 'test' - ... -# Subtest: returns no matches when the active video lacks tags -ok 2 - returns no matches when the active video lacks tags - --- - duration_ms: 0.456058 - type: 'test' - ... -# Subtest: skips candidates without tag metadata -ok 3 - skips candidates without tag metadata - --- - duration_ms: 0.408095 - type: 'test' - ... -# Subtest: filters NSFW and private videos when NSFW content is disabled -ok 4 - filters NSFW and private videos when NSFW content is disabled - --- - duration_ms: 0.535901 - type: 'test' - ... -1..4 -# tests 4 -# suites 0 -# pass 4 -# fail 0 -# cancelled 0 -# skipped 0 -# todo 0 -# duration_ms 17.522938 - -→ Running tests/auth/signingAdapter.test.mjs -TAP version 13 -# Subtest: createNip07SigningAdapter - # Subtest: uses explicit extension if provided - ok 1 - uses explicit extension if provided - --- - duration_ms: 3.540537 - type: 'test' - ... - # Subtest: falls back to window.nostr if no extension provided - ok 2 - falls back to window.nostr if no extension provided - --- - duration_ms: 0.588977 - type: 'test' - ... - # Subtest: throws error if no extension available - ok 3 - throws error if no extension available - --- - duration_ms: 1.377312 - type: 'test' - ... - # Subtest: prioritizes explicit extension over window.nostr - ok 4 - prioritizes explicit extension over window.nostr - --- - duration_ms: 0.857442 - type: 'test' - ... - 1..4 -ok 1 - createNip07SigningAdapter - --- - duration_ms: 7.997828 - type: 'suite' - ... -1..1 -# tests 4 -# suites 1 -# pass 4 -# fail 0 -# cancelled 0 -# skipped 0 -# todo 0 -# duration_ms 21.053227 - -→ Running tests/comment-event-builder.test.mjs -TAP version 13 -# Subtest: buildCommentEvent emits NIP-22 root metadata while keeping legacy fallbacks -ok 1 - buildCommentEvent emits NIP-22 root metadata while keeping legacy fallbacks - --- - duration_ms: 2.793912 - type: 'test' - ... -# Subtest: buildCommentEvent includes parent pointers, kinds, and authors for replies -ok 2 - buildCommentEvent includes parent pointers, kinds, and authors for replies - --- - duration_ms: 0.594595 - type: 'test' - ... -# Subtest: buildCommentEvent normalizes relays and preserves explicit overrides -ok 3 - buildCommentEvent normalizes relays and preserves explicit overrides - --- - duration_ms: 0.820781 - type: 'test' - ... -# Subtest: buildCommentEvent falls back to event pointers when no address is supplied -ok 4 - buildCommentEvent falls back to event pointers when no address is supplied - --- - duration_ms: 0.289549 - type: 'test' - ... -# Subtest: buildCommentEvent accepts partial metadata for parent overrides -ok 5 - buildCommentEvent accepts partial metadata for parent overrides - --- - duration_ms: 0.365041 - type: 'test' - ... -# Subtest: buildCommentEvent sanitizes additional tags before signing -ok 6 - buildCommentEvent sanitizes additional tags before signing - --- - duration_ms: 0.873079 - type: 'test' - ... -1..6 -# tests 6 -# suites 0 -# pass 6 -# fail 0 -# cancelled 0 -# skipped 0 -# todo 0 -# duration_ms 19.584239 - -→ Running tests/comment-thread-service.test.mjs -TAP version 13 -# Subtest: CommentThreadService caches mixed-case video ids consistently -ok 1 - CommentThreadService caches mixed-case video ids consistently - --- - duration_ms: 3.501828 - type: 'test' - ... -# Subtest: CommentThreadService surfaces cache read failures -ok 2 - CommentThreadService surfaces cache read failures - --- - duration_ms: 0.878062 - type: 'test' - ... -# Subtest: CommentThreadService surfaces cache write failures -ok 3 - CommentThreadService surfaces cache write failures - --- - duration_ms: 0.540859 - type: 'test' - ... -# Subtest: CommentThreadService persists caches safely during teardown failures -ok 4 - CommentThreadService persists caches safely during teardown failures - --- - duration_ms: 2.005017 - type: 'test' - ... -# Subtest: CommentThreadService logs cache usage and fallback decisions -ok 5 - CommentThreadService logs cache usage and fallback decisions - --- - duration_ms: 1.21468 - type: 'test' - ... -# Subtest: CommentThreadService normalizes mixed-case event ids in thread state -ok 6 - CommentThreadService normalizes mixed-case event ids in thread state - --- - duration_ms: 2.198276 - type: 'test' - ... -# Subtest: CommentThreadService normalizes mixed-case pubkeys during hydration -ok 7 - CommentThreadService normalizes mixed-case pubkeys during hydration - --- - duration_ms: 1.038858 - type: 'test' - ... -# Subtest: CommentThreadService deduplicates mixed-case event ids and pubkeys -ok 8 - CommentThreadService deduplicates mixed-case event ids and pubkeys - --- - duration_ms: 0.927499 - type: 'test' - ... -# Subtest: CommentThreadService retries profile hydration before succeeding -ok 9 - CommentThreadService retries profile hydration before succeeding - --- - duration_ms: 76.060413 - type: 'test' - ... -# Subtest: CommentThreadService surfaces profile hydration failures after retries -ok 10 - CommentThreadService surfaces profile hydration failures after retries - --- - duration_ms: 201.425935 - type: 'test' - ... -# Subtest: listVideoComments accepts builder events without parent ids and filters replies -ok 11 - listVideoComments accepts builder events without parent ids and filters replies - --- - duration_ms: 6.1484 - type: 'test' - ... -# Subtest: CommentThreadService hydrates, subscribes, and dedupes incoming comment events -ok 12 - CommentThreadService hydrates, subscribes, and dedupes incoming comment events - --- - duration_ms: 34.199346 - type: 'test' - ... -# Subtest: CommentThreadService loadThread falls back to event id when address is missing -ok 13 - CommentThreadService loadThread falls back to event id when address is missing - --- - duration_ms: 0.966091 - type: 'test' - ... -# Subtest: CommentThreadService requests and snapshots comments by root identifier -ok 14 - CommentThreadService requests and snapshots comments by root identifier - --- - duration_ms: 0.803819 - type: 'test' - ... -# Subtest: CommentThreadService falls back to pointerIdentifiers root id -ok 15 - CommentThreadService falls back to pointerIdentifiers root id - --- - duration_ms: 0.784538 - type: 'test' - ... -# Subtest: CommentThreadService preserves raw video author pubkeys during hydration fetches -ok 16 - CommentThreadService preserves raw video author pubkeys during hydration fetches - --- - duration_ms: 5.31487 - type: 'test' - ... -# Subtest: CommentThreadService teardown cancels hydration timers -ok 17 - CommentThreadService teardown cancels hydration timers - --- - duration_ms: 81.386057 - type: 'test' - ... -1..17 -# tests 17 -# suites 0 -# pass 17 -# fail 0 -# cancelled 0 -# skipped 0 -# todo 0 -# duration_ms 428.967471 - -→ Running tests/compliance/nip04_44_compliance.test.mjs -TAP version 13 -# Subtest: NIP-04/44 Compliance: Encryption Preference - # Subtest: createNip46Cipher prefers nip44.v2 when available - ok 1 - createNip46Cipher prefers nip44.v2 when available - --- - duration_ms: 21.960504 - type: 'test' - ... - # Subtest: createNip46Cipher falls back to nip04 if nip44 is missing - ok 2 - createNip46Cipher falls back to nip04 if nip44 is missing - --- - duration_ms: 9.44152 - type: 'test' - ... - 1..2 -ok 1 - NIP-04/44 Compliance: Encryption Preference - --- - duration_ms: 105.292078 - type: 'test' - ... -# Subtest: NIP-04/44 Compliance: Decryption Fallback - # Subtest: decryptNip46PayloadWithKeys handles nip44 (v2) payload - ok 1 - decryptNip46PayloadWithKeys handles nip44 (v2) payload - --- - duration_ms: 24.872325 - type: 'test' - ... - # Subtest: decryptNip46PayloadWithKeys handles nip04 payload - ok 2 - decryptNip46PayloadWithKeys handles nip04 payload - --- - duration_ms: 29.550968 - type: 'test' - ... - 1..2 -ok 2 - NIP-04/44 Compliance: Decryption Fallback - --- - duration_ms: 56.656775 - type: 'test' - ... -1..2 -# tests 6 -# suites 0 -# pass 6 -# fail 0 -# cancelled 0 -# skipped 0 -# todo 0 -# duration_ms 178.623688 - -→ Running tests/compliance/nip07_compliance.test.mjs -TAP version 13 -# Subtest: NIP-07 Compliance: Retry Logic - # Subtest: runNip07WithRetry succeeds on first try - ok 1 - runNip07WithRetry succeeds on first try - --- - duration_ms: 2.056754 - type: 'test' - ... - # Subtest: runNip07WithRetry retries on timeout error - ok 2 - runNip07WithRetry retries on timeout error - --- - duration_ms: 21.14576 - type: 'test' - ... - # Subtest: runNip07WithRetry fails after max retries or if error is not timeout - ok 3 - runNip07WithRetry fails after max retries or if error is not timeout - --- - duration_ms: 1.443995 - type: 'test' - ... - 1..3 -ok 1 - NIP-07 Compliance: Retry Logic - --- - duration_ms: 26.423272 - type: 'test' - ... -1..1 -# tests 4 -# suites 0 -# pass 4 -# fail 0 -# cancelled 0 -# skipped 0 -# todo 0 -# duration_ms 60.90597 - -→ Running tests/compliance/nip65_compliance.test.mjs -TAP version 13 -# Subtest: NIP-65 Compliance: Relay List Loading - # Subtest: loadRelayList requests Kind 10002 - ok 1 - loadRelayList requests Kind 10002 - --- - duration_ms: 4.689822 - type: 'test' - ... - # Subtest: loadRelayList parses r tags correctly - ok 2 - loadRelayList parses r tags correctly - --- - duration_ms: 0.42635 - type: 'test' - ... - 1..2 -ok 1 - NIP-65 Compliance: Relay List Loading - --- - duration_ms: 153.095055 - type: 'test' - ... -1..1 -# tests 3 -# suites 0 -# pass 3 -# fail 0 -# cancelled 0 -# skipped 0 -# todo 0 -# duration_ms 167.16601 - -→ Running tests/compliance/video_note_compliance.test.mjs -TAP version 13 -# Subtest: Video Note Compliance (Kind 30078 & NIP-71) - # Subtest: prepareVideoPublishPayload creates Kind 30078 event - ok 1 - prepareVideoPublishPayload creates Kind 30078 event - --- - duration_ms: 2.510144 - type: 'test' - ... - # Subtest: prepareVideoPublishPayload includes NIP-71 tags when provided - ok 2 - prepareVideoPublishPayload includes NIP-71 tags when provided - --- - duration_ms: 1.061775 - type: 'test' - ... - 1..2 -ok 1 - Video Note Compliance (Kind 30078 & NIP-71) - --- - duration_ms: 36.920137 - type: 'test' - ... -1..1 -# tests 3 -# suites 0 -# pass 3 -# fail 0 -# cancelled 0 -# skipped 0 -# todo 0 -# duration_ms 48.6723 - -→ Running tests/design-system-metrics.test.mjs -TAP version 13 -# Subtest: metric probe falls back to numeric parsing when measurement fails -ok 1 - metric probe falls back to numeric parsing when measurement fails - --- - duration_ms: 262.474863 - type: 'test' - ... -1..1 -# tests 1 -# suites 0 -# pass 1 -# fail 0 -# cancelled 0 -# skipped 0 -# todo 0 -# duration_ms 273.524634 - -→ Running tests/designSystem/dynamicStyles.test.mjs -TAP version 13 -# Subtest: js/designSystem/dynamicStyles.js - # Subtest: registerScope - # Subtest: should register a scope and return a string ID - ok 1 - should register a scope and return a string ID - --- - duration_ms: 94.693189 - type: 'test' - ... - # Subtest: should create a style element or use adoptedStyleSheets - ok 2 - should create a style element or use adoptedStyleSheets - --- - duration_ms: 14.939194 - type: 'test' - ... - # Subtest: should insert rules with the correct selector - ok 3 - should insert rules with the correct selector - --- - duration_ms: 13.524579 - type: 'test' - ... - # Subtest: should handle "&" in selectors - ok 4 - should handle "&" in selectors - --- - duration_ms: 11.046488 - type: 'test' - ... - 1..4 - ok 1 - registerScope - --- - duration_ms: 135.426176 - type: 'suite' - ... - # Subtest: setVariables - # Subtest: should update CSS variables on the scope - ok 1 - should update CSS variables on the scope - --- - duration_ms: 12.693568 - type: 'test' - ... - # Subtest: should handle removing variables - ok 2 - should handle removing variables - --- - duration_ms: 9.815112 - type: 'test' - ... - 1..2 - ok 2 - setVariables - --- - duration_ms: 22.885703 - type: 'suite' - ... - # Subtest: releaseScope - # Subtest: should remove rules and clean up - ok 1 - should remove rules and clean up - --- - duration_ms: 10.257187 - type: 'test' - ... - # Subtest: should return false for non-existent scope - ok 2 - should return false for non-existent scope - --- - duration_ms: 13.536061 - type: 'test' - ... - 1..2 - ok 3 - releaseScope - --- - duration_ms: 24.195856 - type: 'suite' - ... - # Subtest: Isolation - # Subtest: should manage scopes independently for different documents - ok 1 - should manage scopes independently for different documents - --- - duration_ms: 27.669183 - type: 'test' - ... - 1..1 - ok 4 - Isolation - --- - duration_ms: 27.795493 - type: 'suite' - ... - # Subtest: Edge cases - # Subtest: should handle invalid selectors gracefully - ok 1 - should handle invalid selectors gracefully - --- - duration_ms: 9.567256 - type: 'test' - ... - # Subtest: should handle missing document gracefully - ok 2 - should handle missing document gracefully - --- - duration_ms: 6.555677 - type: 'test' - ... - # Subtest: should fallback to