TAP version 13
# Subtest: DeepSeek request explicitly disables thinking and caps generated tokens
ok 1 - DeepSeek request explicitly disables thinking and caps generated tokens
  ---
  duration_ms: 3.038138
  type: 'test'
  ...
# Subtest: source is kept separate from instructions
ok 2 - source is kept separate from instructions
  ---
  duration_ms: 0.388115
  type: 'test'
  ...
# Subtest: invalid text, mode, and oversized selection are rejected
ok 3 - invalid text, mode, and oversized selection are rejected
  ---
  duration_ms: 0.486689
  type: 'test'
  ...
# Subtest: settings are sanitized and unsupported budgets use a safe default
ok 4 - settings are sanitized and unsupported budgets use a safe default
  ---
  duration_ms: 0.319658
  type: 'test'
  ...
# Subtest: decoder reads final content and usage without exposing reasoning_content
ok 5 - decoder reads final content and usage without exposing reasoning_content
  ---
  duration_ms: 0.456303
  type: 'test'
  ...
# Subtest: refusal text is preserved
ok 6 - refusal text is preserved
  ---
  duration_ms: 0.221504
  type: 'test'
  ...
# Subtest: truncation is marked rather than presented as a complete answer
ok 7 - truncation is marked rather than presented as a complete answer
  ---
  duration_ms: 0.401611
  type: 'test'
  ...
# Subtest: HTTP and malformed successful results are readable failures
ok 8 - HTTP and malformed successful results are readable failures
  ---
  duration_ms: 4.325498
  type: 'test'
  ...
# Subtest: legacy response shapes and non-assistant or reasoning-only content are rejected
ok 9 - legacy response shapes and non-assistant or reasoning-only content are rejected
  ---
  duration_ms: 0.448629
  type: 'test'
  ...
# Subtest: ordinary web pages and local files have distinct site scopes
ok 10 - ordinary web pages and local files have distinct site scopes
  ---
  duration_ms: 0.814532
  type: 'test'
  ...
# Subtest: all-site access is enabled by default and pause exceptions are normalized
ok 11 - all-site access is enabled by default and pause exceptions are normalized
  ---
  duration_ms: 0.453167
  type: 'test'
  ...
# Subtest: demo output is clearly marked as non-model content
ok 12 - demo output is clearly marked as non-model content
  ---
  duration_ms: 0.185096
  type: 'test'
  ...
# Subtest: DOM: selection offers an icon without requesting, and click opens the answer
ok 13 - DOM: selection offers an icon without requesting, and click opens the answer
  ---
  duration_ms: 349.574825
  type: 'test'
  ...
# Subtest: DOM: tabs change the selected operation without replacing the source
ok 14 - DOM: tabs change the selected operation without replacing the source
  ---
  duration_ms: 354.429094
  type: 'test'
  ...
# Subtest: DOM: Escape closes the card and requests cancellation
ok 15 - DOM: Escape closes the card and requests cancellation
  ---
  duration_ms: 331.831749
  type: 'test'
  ...
# Subtest: DOM: a late previous response cannot replace the current selection
ok 16 - DOM: a late previous response cannot replace the current selection
  ---
  duration_ms: 685.397875
  type: 'test'
  ...
# Subtest: DOM: editable drafts and paused sites do not auto-request
ok 17 - DOM: editable drafts and paused sites do not auto-request
  ---
  duration_ms: 631.83254
  type: 'test'
  ...
# Subtest: DOM: model text is not interpreted as HTML and the card is viewport-clamped
ok 18 - DOM: model text is not interpreted as HTML and the card is viewport-clamped
  ---
  duration_ms: 332.625478
  type: 'test'
  ...
# Subtest: DOM: a paused site stays inactive on page load and works after resume
ok 19 - DOM: a paused site stays inactive on page load and works after resume
  ---
  duration_ms: 679.165793
  type: 'test'
  ...
# Subtest: DOM: changing access closes an active card and ignores a late answer
ok 20 - DOM: changing access closes an active card and ignores a late answer
  ---
  duration_ms: 373.031923
  type: 'test'
  ...
# Subtest: DOM: installed extension does not make requests on the labelled local demo
ok 21 - DOM: installed extension does not make requests on the labelled local demo
  ---
  duration_ms: 332.553376
  type: 'test'
  ...
# Subtest: DOM: icon click uses saved text after the source selection disappears
ok 22 - DOM: icon click uses saved text after the source selection disappears
  ---
  duration_ms: 332.98463
  type: 'test'
  ...
# Subtest: DOM: clicking the same icon twice only requests once
ok 23 - DOM: clicking the same icon twice only requests once
  ---
  duration_ms: 331.840904
  type: 'test'
  ...
# Subtest: DOM: oversized selections show a clear error without an answer request
ok 24 - DOM: oversized selections show a clear error without an answer request
  ---
  duration_ms: 332.623158
  type: 'test'
  ...
# Subtest: DOM: a growing answer cannot flip the card above or below the selection
ok 25 - DOM: a growing answer cannot flip the card above or below the selection
  ---
  duration_ms: 361.212081
  type: 'test'
  ...
# Subtest: DOM: mode changes preserve the existing result position
ok 26 - DOM: mode changes preserve the existing result position
  ---
  duration_ms: 358.733937
  type: 'test'
  ...
# Subtest: DOM: bulb launcher opens a result that keeps the Ahaly logo while loading and done
ok 27 - DOM: bulb launcher opens a result that keeps the Ahaly logo while loading and done
  ---
  duration_ms: 357.587987
  type: 'test'
  ...
# Subtest: settings load existing preferences without exposing the saved key
ok 28 - settings load existing preferences without exposing the saved key
  ---
  duration_ms: 58.319899
  type: 'test'
  ...
# Subtest: saving preferences with an empty key preserves the session key
ok 29 - saving preferences with an empty key preserves the session key
  ---
  duration_ms: 27.608058
  type: 'test'
  ...
# Subtest: invalid key input shows an error before changing saved settings
ok 30 - invalid key input shows an error before changing saved settings
  ---
  duration_ms: 24.242139
  type: 'test'
  ...
# Subtest: clear key action removes only the browser session credential
ok 31 - clear key action removes only the browser session credential
  ---
  duration_ms: 23.581772
  type: 'test'
  ...
# Subtest: popup pause, resume and global controls reflect the actual policy
ok 32 - popup pause, resume and global controls reflect the actual policy
  ---
  duration_ms: 23.307943
  type: 'test'
  ...
# Subtest: popup reports unsupported browser pages while settings stay available
ok 33 - popup reports unsupported browser pages while settings stay available
  ---
  duration_ms: 21.826193
  type: 'test'
  ...
# Subtest: manifest covers all ordinary websites, local HTML, and every matching frame
ok 34 - manifest covers all ordinary websites, local HTML, and every matching frame
  ---
  duration_ms: 15.899877
  type: 'test'
  ...
# Subtest: upgrade removes legacy per-site registrations and connects open tabs
ok 35 - upgrade removes legacy per-site registrations and connects open tabs
  ---
  duration_ms: 1.608937
  type: 'test'
  ...
# Subtest: new sites are enabled without a per-site activation step
ok 36 - new sites are enabled without a per-site activation step
  ---
  duration_ms: 1.447886
  type: 'test'
  ...
# Subtest: page messages cannot change site or global policy or impersonate extensions
ok 37 - page messages cannot change site or global policy or impersonate extensions
  ---
  duration_ms: 0.547333
  type: 'test'
  ...
# Subtest: sanitized profile never returns the API key
ok 38 - sanitized profile never returns the API key
  ---
  duration_ms: 0.240048
  type: 'test'
  ...
# Subtest: missing key does not send a network request
ok 39 - missing key does not send a network request
  ---
  duration_ms: 0.563603
  type: 'test'
  ...
# Subtest: legacy OpenAI key is never forwarded to DeepSeek
ok 40 - legacy OpenAI key is never forwarded to DeepSeek
  ---
  duration_ms: 0.340426
  type: 'test'
  ...
# Subtest: DeepSeek request stays in worker, disables thinking, and repeat uses cache
ok 41 - DeepSeek request stays in worker, disables thinking, and repeat uses cache
  ---
  duration_ms: 0.945247
  type: 'test'
  ...
# Subtest: changing the DeepSeek key clears cached answers
ok 42 - changing the DeepSeek key clears cached answers
  ---
  duration_ms: 0.846502
  type: 'test'
  ...
# Subtest: authorized embedded website selections work without enabling that origin
ok 43 - authorized embedded website selections work without enabling that origin
  ---
  duration_ms: 0.81841
  type: 'test'
  ...
# Subtest: invalid selections, invalid frame IDs, and restricted browser pages never reach the API
ok 44 - invalid selections, invalid frame IDs, and restricted browser pages never reach the API
  ---
  duration_ms: 1.22513
  type: 'test'
  ...
# Subtest: demo results never use the key or network
ok 45 - demo results never use the key or network
  ---
  duration_ms: 0.416869
  type: 'test'
  ...
# Subtest: a paused top-level website also blocks its embedded pages
ok 46 - a paused top-level website also blocks its embedded pages
  ---
  duration_ms: 0.696462
  type: 'test'
  ...
# Subtest: global pause blocks every site and resume preserves per-site exceptions
ok 47 - global pause blocks every site and resume preserves per-site exceptions
  ---
  duration_ms: 0.925039
  type: 'test'
  ...
# Subtest: revoking top or frame permission blocks embedded requests
ok 48 - revoking top or frame permission blocks embedded requests
  ---
  duration_ms: 0.53992
  type: 'test'
  ...
# Subtest: local HTML requires the browser file-access toggle
ok 49 - local HTML requires the browser file-access toggle
  ---
  duration_ms: 0.906434
  type: 'test'
  ...
# Subtest: frame cancellation cannot cancel a sibling frame's request
ok 50 - frame cancellation cannot cancel a sibling frame's request
  ---
  duration_ms: 9.532169
  type: 'test'
  ...
1..50
# tests 50
# suites 0
# pass 50
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 7558.139095
