Files
microsoft--webwright/skills/webwright/reference/workflow.md
T
2026-07-13 12:28:42 +08:00

108 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Workflow
Detailed expansion of the six-step Webwright loop, adapted for Claude Code.
The original loop relied on `webwright.tools.image_qa` for visual QA and
`webwright.tools.self_reflection` for the final verdict. Both are replaced
here by your native abilities (`Read` on PNG files + reasoning against
`plan.md`). No `OPENAI_API_KEY` is required.
## 1. Plan
Parse the task into critical points (CPs) and write `WORKSPACE_DIR/plan.md`:
```markdown
# Task
<verbatim task description>
# Critical Points
- [ ] CP1: <constraint / filter / sort / selection / required datum>
- [ ] CP2: ...
```
Rules for CPs:
- One CP per independently verifiable requirement.
- Numeric, date, quantity, and unit CPs must be exact.
- Ranking CPs ("cheapest", "best-selling", "highest-rated", …) must
reference the site's actual sort/filter control.
- If the task asks for a final datum, make it its own CP
(e.g. `CP5: Record the displayed cheapest economy fare`).
## 2. Explore
Goal: discover stable selectors, confirm every required filter control
exists, and identify how to capture evidence for each CP.
- Run scratch Playwright scripts (see `playwright_patterns.md`) inside
`WORKSPACE_DIR/`. Save scratch PNGs under `WORKSPACE_DIR/screenshots/`
(separate from `final_runs/`).
- Print URL, title, and `aria_snapshot()` for the region of interest at
every step.
- Use `Read` on saved PNGs to confirm UI state when ARIA evidence is
ambiguous.
- If a filter looks unavailable, expand drawers / accordions / mobile
filter panels and inspect again before concluding it doesn't exist.
- A search-box query never substitutes for a dedicated filter control.
## 3. Author `final_script.py`
Create a fresh `final_runs/run_<id>/` (use the next integer above any
existing `run_*`) and place `final_script.py` inside it. Instrument per
`playwright_patterns.md`:
- viewport 1280×1800, headless local Firefox, no `full_page`;
- one `final_execution_<step>_<action>.png` per CP;
- one `step <n> action: <reason and action>` log line per
constraint-relevant interaction;
- the final datum printed into `final_script_log.txt` at the end.
Each screenshot should map to a CP from `plan.md` so verification is
trivial.
## 4. Execute
Run the script once. If it crashes, fix it inside the same run folder and
re-execute — but if a partial run already produced screenshots that don't
match the fixed flow, delete them so the run folder reflects a single
clean execution.
## 5. Self-verify (replaces `self_reflection`)
For every CP in `plan.md`:
1. Identify the screenshot(s) and/or log line that provide evidence.
2. `Read` each cited PNG.
3. Confirm the evidence is **unambiguous**:
- Filter chip / selected state visibly applied (not hidden behind a
closed drawer);
- Numeric / date values match exactly (not broadened);
- Sort applied via the site's control (not implied by result order);
- Required submit / search / apply action visibly taken;
- Final datum legibly displayed.
4. Tick the CP only when the evidence is concrete. Be harsh on partial,
occluded, or ambiguous states.
If any CP fails, diagnose the *specific* issue — wrong filter value,
missing control, hidden chip, broadened range, missing confirmation,
missing screenshot, etc. Fix `final_script.py`, run it again inside
`final_runs/run_<id+1>/`, and re-verify against `plan.md`.
Empty result sets are acceptable when the correct filters were demonstrably
applied.
## 6. Done
Stop only when **all** of the following are true:
1. `plan.md` exists with every CP enumerated as a checklist item.
2. `final_runs/run_<id>/final_script.py` ran cleanly from scratch and
produced `final_script_log.txt` plus all CP screenshots.
3. Every CP is checked off with a cited screenshot and/or log line.
4. The final datum (if the task asked for one) is reported to the user
verbatim and is also present in `final_script_log.txt`.
5. `ls -R final_runs/run_<id>` and `cat final_runs/run_<id>/final_script_log.txt`
show the expected artifacts.
If any of those is false, do not declare done — diagnose, fix, and re-run
in a new `run_<id+1>/`.