Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
97 changes: 82 additions & 15 deletions examples/web/example-domain.fsq.yaml
Original file line number Diff line number Diff line change
@@ -1,24 +1,91 @@
schemaVersion: fsq.ai-test/v1
name: Example Domain smoke test
description: Public deterministic Web example with no account, private data, or application-specific dependency.
name: "Recorded: Open the link: \"https://todomvc.com/examples/react/dist/\", add\
\ \u201CReview FSQ evidence\u201D and \u201CPublish v0.1.0\u201D, complete the first\
\ task, filter to Active, and verify only \u201CPublish v0.1.0\u201D is visible."
description: Generated from dynamic run open-the-link-https-todomvc-com-examples-react-dist-add-revi-20260831T083010Z-afcfd0.
platform: web
tags: [example, web, smoke]
tags:
- recorded
- dynamic-llm
properties:
recording:
source_run_id: open-the-link-https-todomvc-com-examples-react-dist-add-revi-20260831T083010Z-afcfd0
source_task_id: open-the-link-https-todomvc-com-examples-react-dist-add-revi-c6f8cc28
source_status: success
draft: false
required_runtime_secret_names: []
warnings:
- 'Skipped click_on: platform action status was failed'
---
- startBrowser
- startBrowser: {}
- navigateTo:
url: https://example.com/
url: https://todomvc.com/examples/react/dist/
waitUntil: domcontentloaded
- typeText:
target: textbox "New Todo Input" [active] [ref=e38]
locator: null
text: Review FSQ evidence
textType: literal
clear: true
- pressKey:
key: Enter
- typeText:
target: textbox "New Todo Input" [active] [ref=e38]
locator: null
text: Publish v0.1.0
textType: literal
clear: true
- pressKey:
key: Enter
- clickOn:
target: null
locator:
role: null
name: null
text: null
label: null
placeholder: null
testId: null
css: .todo-list li:nth-child(1) input.toggle
xpath: null
altText: null
title: null
ref: null
button: left
double: false
- clickOn:
target: link "Active" [ref=e57]
locator: null
button: left
double: false
- assertVisible:
target: Example Domain heading
target: null
locator:
role: heading
name: Example Domain
role: null
name: null
text: Publish v0.1.0
label: null
placeholder: null
testId: null
css: null
xpath: null
altText: null
title: null
ref: null
optional: false
- assertText:
target: Example Domain heading
- assertNotVisible:
target: null
locator:
role: heading
name: Example Domain
text:
equals: Example Domain
role: null
name: null
text: Review FSQ evidence
label: null
placeholder: null
testId: null
css: null
xpath: null
altText: null
title: null
ref: null
optional: false
- closeBrowser
- closeBrowser: {}
25 changes: 23 additions & 2 deletions tests/test_fsq_executable_step_adapter.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,11 +80,32 @@ def test_public_web_example_matches_current_executable_contract() -> None:
assert [step.action_name for step in steps] == [
"start_browser",
"navigate_to",
"type_text",
"press_key",
"type_text",
"press_key",
"click_on",
"click_on",
"assert_visible",
"assert_text",
"assert_not_visible",
"close_browser",
]
assert steps[3].params["text"] == {"equals": "Example Domain"}
assert steps[2].params["text"] == "Review FSQ evidence"
assert steps[2].params["textType"] == "literal"
assert steps[2].params["clear"] is True
assert steps[4].params["text"] == "Publish v0.1.0"
assert steps[4].params["textType"] == "literal"
assert steps[4].params["clear"] is True
assert steps[6].params["locator"] == {"css": ".todo-list li:nth-child(1) input.toggle"}
assert "Active" in steps[7].params["target"]
assert steps[8].params == {
"locator": {"text": "Publish v0.1.0"},
"optional": False,
}
assert steps[9].params == {
"locator": {"text": "Review FSQ evidence"},
"optional": False,
}


def test_windows_strict_replay_allows_null_targets(tmp_path: Path) -> None:
Expand Down
Loading