From a75c903fba8869264eb863d8fe9e0ef3e7a43f70 Mon Sep 17 00:00:00 2001 From: mijun Date: Wed, 2 Sep 2026 17:35:51 +0800 Subject: [PATCH 1/3] modify example modify example --- examples/web/example-domain.fsq.yaml | 97 +++++++++++++++++++++++----- 1 file changed, 82 insertions(+), 15 deletions(-) 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: {} From 2332108986433e16541f7bfe955fb57607bdaa28 Mon Sep 17 00:00:00 2001 From: Qunmi Date: Wed, 2 Sep 2026 17:45:19 +0800 Subject: [PATCH 2/3] Fix public web example contract test --- tests/test_fsq_executable_step_adapter.py | 27 +++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/tests/test_fsq_executable_step_adapter.py b/tests/test_fsq_executable_step_adapter.py index 12a8521..755936e 100644 --- a/tests/test_fsq_executable_step_adapter.py +++ b/tests/test_fsq_executable_step_adapter.py @@ -80,11 +80,34 @@ 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: From 2c1f89e0c6541f460dae40f756d1dddc26471e1e Mon Sep 17 00:00:00 2001 From: Qunmi Date: Wed, 2 Sep 2026 17:47:31 +0800 Subject: [PATCH 3/3] Format web example contract test --- tests/test_fsq_executable_step_adapter.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tests/test_fsq_executable_step_adapter.py b/tests/test_fsq_executable_step_adapter.py index 755936e..894e8fa 100644 --- a/tests/test_fsq_executable_step_adapter.py +++ b/tests/test_fsq_executable_step_adapter.py @@ -96,9 +96,7 @@ def test_public_web_example_matches_current_executable_contract() -> None: 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 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"},