diff --git a/examples/web/example-domain.fsq.yaml b/examples/web/example-domain.fsq.yaml index 11022cb..52fc635 100644 --- a/examples/web/example-domain.fsq.yaml +++ b/examples/web/example-domain.fsq.yaml @@ -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: {} diff --git a/tests/test_fsq_executable_step_adapter.py b/tests/test_fsq_executable_step_adapter.py index 12a8521..894e8fa 100644 --- a/tests/test_fsq_executable_step_adapter.py +++ b/tests/test_fsq_executable_step_adapter.py @@ -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: