===
navigate to test page
%require
===
plwr -S plwr-test open "http://localhost:8599/index.html"
---
===
wait times out on missing element
===
! plwr -S plwr-test wait .does-not-exist -T 500
---
Timeout 500ms exceeded. [selector: .does-not-exist]
===
click fails on missing element
===
! plwr -S plwr-test click .does-not-exist -T 500
---
Timeout 500ms exceeded. [selector: .does-not-exist]
===
text fails on missing element
===
! plwr -S plwr-test text .does-not-exist -T 500
---
Timeout 500ms exceeded. [selector: .does-not-exist]
===
attr fails on missing element
===
! plwr -S plwr-test attr .does-not-exist href -T 500
---
Timeout 500ms exceeded. [selector: .does-not-exist]
===
fill fails on missing element
===
! plwr -S plwr-test fill .does-not-exist hello -T 500
---
Timeout 500ms exceeded. [selector: .does-not-exist]
===
tree fails on missing selector
===
! plwr -S plwr-test tree .does-not-exist
---
No element found for selector: .does-not-exist
===
hover fails on missing element
===
! plwr -S plwr-test hover .does-not-exist -T 500
---
Timeout 500ms exceeded. [selector: .does-not-exist]
===
check fails on missing element
===
! plwr -S plwr-test check .does-not-exist -T 500
---
Timeout 500ms exceeded. [selector: .does-not-exist]
===
uncheck fails on missing element
===
! plwr -S plwr-test uncheck .does-not-exist -T 500
---
Timeout 500ms exceeded. [selector: .does-not-exist]
===
dblclick fails on missing element
===
! plwr -S plwr-test dblclick .does-not-exist -T 500
---
Timeout 500ms exceeded. [selector: .does-not-exist]
===
select fails on missing element
===
! plwr -S plwr-test select .does-not-exist val -T 500
---
Timeout 500ms exceeded. [selector: .does-not-exist]
===
focus fails on missing element
===
! plwr -S plwr-test focus .does-not-exist -T 500
---
Timeout 500ms exceeded. [selector: .does-not-exist]
===
blur fails on missing element
===
! plwr -S plwr-test blur .does-not-exist -T 500
---
Timeout 500ms exceeded. [selector: .does-not-exist]
===
inner-html fails on missing element
===
! plwr -S plwr-test inner-html .does-not-exist -T 500
---
Timeout 500ms exceeded. [selector: .does-not-exist]
===
input-value fails on missing element
===
! plwr -S plwr-test input-value .does-not-exist -T 500
---
Timeout 500ms exceeded. [selector: .does-not-exist]
===
scroll fails on missing element
===
! plwr -S plwr-test scroll .does-not-exist -T 500
---
Timeout 500ms exceeded. [selector: .does-not-exist]
===
open fails with invalid URL
===
! plwr -S plwr-test open "not-a-url"
---
Cannot navigate to invalid URL
===
eval fails with invalid JS
===
! plwr -S plwr-test eval "???"
---
SyntaxError: Unexpected token '??'
===
press fails with invalid key and shows valid keys
===
! plwr -S plwr-test press NotAKey
---
Unknown key: "NotAKey"
Valid keys: a-z A-Z 0-9, Backspace Tab Enter Escape Space Delete Insert, ArrowUp ArrowDown ArrowLeft ArrowRight Home End PageUp PageDown, F1-F12, Control Shift Alt Meta, any US keyboard character: !@#$%^&*()_+-=[]{}\|;':",./<>?`~
Chords: Control+c, Shift+Enter, Alt+Tab, Meta+a
===
screenshot fails with invalid path
===
! plwr -S plwr-test screenshot --path /nonexistent/dir/img.png
---
No such file or directory (os error 2)
===
header requires name and value
===
! plwr -S plwr-test header X-Foo
---
Usage: plwr header <name> <value> or plwr header --clear
Missing value for header 'X-Foo'
===
header with no arguments fails
===
! plwr -S plwr-test header
---
Usage: plwr header <name> <value> or plwr header --clear
===
cookie requires name and value
===
! plwr -S plwr-test cookie session
---
Usage: plwr cookie <name> <value> [--url <url>], plwr cookie --list, or plwr cookie --clear
Missing value for cookie 'session'
===
cookie with no arguments fails
===
! plwr -S plwr-test cookie
---
Usage: plwr cookie <name> <value> [--url <url>], plwr cookie --list, or plwr cookie --clear
===
stop reports no session running
===
plwr -S plwr-test-nonexistent stop
---
No session 'plwr-test-nonexistent' running
===
commands fail without start
===
! plwr -S plwr-test-nonexistent open "https://example.com"
---
No session running. Use 'plwr start' first.
===
url fails without start
===
! plwr -S plwr-test-nonexistent url
---
No session running. Use 'plwr start' first.
===
text fails without start
===
! plwr -S plwr-test-nonexistent text h1
---
No session running. Use 'plwr start' first.
===
click fails without start
===
! plwr -S plwr-test-nonexistent click h1
---
No session running. Use 'plwr start' first.
===
url fails before open
===
! plwr -S plwr-test-nopage url
---
No session running. Use 'plwr start' first.
===
start a session for no-page tests
%require
===
plwr -S plwr-test-nopage start
---
Started session 'plwr-test-nopage'
===
url fails after start but before open
===
! plwr -S plwr-test-nopage url
---
No page open. Use 'plwr open <url>' first.
===
text fails after start but before open
===
! plwr -S plwr-test-nopage text h1
---
No page open. Use 'plwr open <url>' first.
===
click fails after start but before open
===
! plwr -S plwr-test-nopage click h1
---
No page open. Use 'plwr open <url>' first.
===
press fails after start but before open
===
! plwr -S plwr-test-nopage press Enter
---
No page open. Use 'plwr open <url>' first.
===
eval fails after start but before open
===
! plwr -S plwr-test-nopage eval "1+1"
---
No page open. Use 'plwr open <url>' first.
===
reload fails after start but before open
===
! plwr -S plwr-test-nopage reload
---
No page open. Use 'plwr open <url>' first.
===
count fails after start but before open
===
! plwr -S plwr-test-nopage count h1
---
No page open. Use 'plwr open <url>' first.
===
cookie list works after start but before open (returns empty)
===
plwr -S plwr-test-nopage cookie --list
---
[]
===
header works after start but before open
===
plwr -S plwr-test-nopage header X-Test value
---
===
viewport works after start but before open
===
plwr -S plwr-test-nopage viewport 800 600
---
===
stop no-page session
===
plwr -S plwr-test-nopage stop
---
Stopped session 'plwr-test-nopage'