StrikekitStrikekit

Commands

StrikeTest step commands for actions and assertions

Every step line is (Given|When|And|Then) [I] <command> …. Commands take qualifiers (for example with, on, to) and quoted values.

Core

Forms and selection

Slots and data

Scope and navigation

Pointer, keyboard, dialogs, evidence

Browser data, viewport, clipboard (web only)

Control flow

Platform: api

Requires Platform: api and $API_BASE_URL. See Platform: api.

Quick index

CommandTypical formPurpose
navigatenavigate to "url"Open a page
fillfill "field" with "value"Type into an input
clickclick on "Login" / … columnClick a button, link, or column header
double clickdouble click on "Draft"Double-click
right clickright click on "Row 3"Context-menu click
force clickforce click on "Submit"Force-click (bypass overlay checks)
dragdrag "Item A" to "Drop zone"Drag and drop
setset "Volume" to "75"Native range input
toggletoggle "Dark mode"Toggle checkbox / switch
shouldshould see "…", should have "…" be indeterminateAssertions
waitwait for "…", wait for network idle, wait for responsePolling waits
pausepause for "2" secondsLast-resort sleep
capture screenshotcapture screenshot "checkout-step"Write PNG under screenshots/
accept cookiesaccept cookiesConsent banner allowlist
selectselect "US" from "Country"Native <select>
pickpick "Canada" from "Country"Custom combobox
openopen "Tags" / open … and pickOpen / open+pick
typetype "Can" in "Country" and pick "Canada"Typeahead
pick datepick date "2026-06-15" in "Start date"Native date
pick timepick time "09:30" in "Meeting time"Native time
storestore "@csrf" from "…" / from api json "$.id"Capture into @ / @@
generategenerate "@guest" as emailFresh dynamic values
calculatecalculate "@line" as "50*3"Arithmetic into a slot
scopescope to "Payment frame"iframe / frame scope
inin "products" / in ".." / in "page"Element scope stack
hoverhover on "Profile"Pointer over element
presspress "Enter" on "password"Keyboard
scrollscroll to "Submit"Bring into view
clearclear "search"Empty an input
refreshrefreshReload page
uploadupload "file.pdf" to "Attachments"File input
acceptaccept "Are you sure?"Arm dialog accept
dismissdismiss "Session expired"Arm dialog dismiss
switchswitch to tab "Help"Browser tab
gogo back / go forwardHistory
set cookieset cookie "session" to "abc"Cookie (web only)
set local storageset local storage "token" to "abc"localStorage (web only)
set session storageset session storage "token" to "abc"sessionStorage (web only)
clear browser dataclear browser dataClear cookies + storages (web only)
resizeresize to "375" by "812"Viewport size (web only)
set clockset clock to "…"Fixed Playwright clock (web only)
copycopy "hello"Clipboard write (web only)
if / else if / elseif see "…" then click on "…"Conditional branches (optional UI)
api getapi get "/orders"HTTP GET (Platform: api)
api postapi post "/orders" with body '…'HTTP POST
api put / patch / deletesame body helpersHTTP verbs
api set headerapi set header "Authorization" to "…"Session header
api set fieldapi set field "name" to "Invoice"Multipart text field
api set fieldsapi set fields to '{…}'Multipart text map (JSON object)
api set fileapi set file "main" to "invoice.pdf"Multipart file part
api shouldapi should status "201"Assert last response
api waitapi wait until json path "$.status" be "ready"Poll last request until path matches

See also Qualifiers, Language, and Examples.

Syntax reminders

  • All values are quoted (" or ').
  • Env vars: "$VAR_NAME" inside quotes.
  • Labels are plain text — never CSS or XPath.
  • # starts a comment line.
  • Planned (not implemented): API leftovers (query helpers / schema / GraphQL).

On this page