Use this skill whenever the user asks to test, validate, verify, inspect browser
behavior, test a form, confirm staging behavior, perform performance analysis,
or run Lighthouse during development.
Validation practices
- Use the smallest existing test, lint, or type-check that covers the change.
Do not install new testing tools solely for validation.
- For data-changing SQL Server scripts, preserve and exercise the script's
preflight validation, dry-run gate, transaction behavior, affected-row
validation, and post-execution verification. Do not use
THROW; scripts
must remain compatible with legacy SQL Server.
- Report only validation that was actually performed and its concrete outcome.
Browser testing and staging validation
Use Playwright (playwright-browser_*) by default for all browser-based
testing, staging verification, and automated QA.
- Run the smallest applicable existing Playwright spec before supplemental
checks. Preserve failures, distinguish root causes from cascade errors, and
do not modify tests during validation-only work.
- Navigate directly to the target URL instead of using global navigation flows.
- For functional or form validation, use
playwright-browser_run_code_unsafe to batch
route setup, navigation, interactions, and waits into one script. Block image,
font, media, and analytics requests where they are not part of the scenario.
Do not block resources for visual, performance, or asset-verification tests.
- Disable CSS animations and transitions immediately after navigation unless the
scenario verifies motion or timing behavior.
- Wait for the observable state required by the scenario's expected result,
such as a matching result card, success message, changed control state, or
required network response. Do not use arbitrary delays; after a timed-out
condition, report the blocked or failed validation instead of retrying it.
- Inspect only the target form or container with
playwright-browser_evaluate or a targeted
playwright-browser_snapshot. Assert the relevant controls or results within
that target; do not use page-wide text, document.body.innerText, broad
element scans, or document.querySelectorAll('*') as passing evidence.
Broader inspection is permitted only to diagnose a failed or blocked test,
and the reason must be reported.
- Prefer
playwright-browser_fill_form for ordinary field entry. Use
playwright-browser_type only when the scenario needs keyboard events, such
as per-character autocomplete behavior.
- Prefer normal user-like Playwright actions. Programmatic DOM events are
diagnostic only and do not prove that an interaction is usable.
- When analytics or
dataLayer events can precede navigation, attach the event
listener before the triggering action and capture the result in the same
script to avoid losing it as the page unloads.
- Use
playwright-browser_run_code_unsafe for multi-step browser flows or
structured dataLayer capture, especially when batching avoids tool
round-trips.
- When recording
dataLayer evidence, provide structured results: event
counts, relevant field presence, and a representative payload.
- Do not take screenshots unless verifying an explicit layout requirement or
documenting a visual failure.
- Inspect console output only at
warning or error level. Inspect network
activity only for 4xx or 5xx failures, and omit request or response
payloads unless diagnosing an error. Distinguish third-party noise from
application failures.
- If Playwright fails to initialize, report the failure and retry once. Do not
silently switch tools.
Use Chrome DevTools only when Playwright is confirmed unavailable or when the
scenario specifically needs performance tracing, Lighthouse, LCP/Core Web
Vitals analysis, or JavaScript breakpoints.
When Chrome DevTools is used:
- Prefer DOM snapshots over screenshots for inspection.
- Use DOM-based locating before clicking.
- Batch related operations and form inputs where possible.
- Navigate directly to target URLs rather than through global navigation.
- Avoid unnecessary reloads; reuse the current page state.
- Use screenshots only for visual verification.
- Run Lighthouse only when the user explicitly requests it.
- Filter network requests to
4xx and 5xx failures, and console output to
warnings and errors unless broader evidence is needed. Do not include request
or response payloads unless diagnosing an error.
- Prefer a wait condition over arbitrary delays and do not poll after a timed
out wait.
- Hard-refresh with cache bypass when verifying freshly deployed assets.
- If DevTools reports a transport or initialization failure, switch directly
to Playwright without repeated retries.
Form-submission safety
- Use
adorado@tireweb.com in every email field when testing form submission.
- Never submit a production form without the user's explicit approval.
- When a submission must not reach the server, intercept it before triggering
the action and verify both the request and resulting UI state.
Authenticated browser sessions
- Navigate to the login screen and pause when authentication is required.
- The user must enter credentials and complete multi-factor authentication
directly in the same browser session. Never request, receive, store, or
enter credentials or authentication codes.
- Continue only after the user confirms authentication is complete.
- If the session expires or another authentication challenge appears, pause
again for the user rather than attempting to bypass it.
- Prefer a dedicated non-production test account for repeatable testing when
one is available.
Staging assets
For browser-served static assets deployed to staging, verify the public staging
URL with cache bypass, such as a timestamp query parameter, and compare the
response hash to the approved deployment asset when the deployment workflow
supports it. Do not treat an upload alone as browser verification.
Validation reporting
Report browser test outcomes as a compact status block:
Status: Pass/Fail | Target URL: <URL> | Failing Selectors/Errors: <details or none>
Report PASS, FAIL, or BLOCKED per scenario. Keep automated-test results separate
from supplemental checks, classify conflicting outcomes explicitly, and list
coverage limitations. Include detail only when needed to reproduce or explain a
failure.
1---2name: dev-testing3description: Consolidated Ezytire developer testing, browser validation, staging verification, form-submission, and test-validation guidance. Invoke for requests involving development testing, validation, browser checks, staging verification, form testing, performance analysis, or Lighthouse.4---56Use this skill whenever the user asks to test, validate, verify, inspect browser7behavior, test a form, confirm staging behavior, perform performance analysis,8or run Lighthouse during development.910## Validation practices1112- Use the smallest existing test, lint, or type-check that covers the change.13 Do not install new testing tools solely for validation.14- For data-changing SQL Server scripts, preserve and exercise the script's15 preflight validation, dry-run gate, transaction behavior, affected-row16 validation, and post-execution verification. Do not use `THROW`; scripts17 must remain compatible with legacy SQL Server.18- Report only validation that was actually performed and its concrete outcome.1920## Browser testing and staging validation2122Use Playwright (`playwright-browser_*`) by default for all browser-based23testing, staging verification, and automated QA.2425- Run the smallest applicable existing Playwright spec before supplemental26 checks. Preserve failures, distinguish root causes from cascade errors, and27 do not modify tests during validation-only work.28- Navigate directly to the target URL instead of using global navigation flows.29- For functional or form validation, use `playwright-browser_run_code_unsafe` to batch30 route setup, navigation, interactions, and waits into one script. Block image,31 font, media, and analytics requests where they are not part of the scenario.32 Do not block resources for visual, performance, or asset-verification tests.33- Disable CSS animations and transitions immediately after navigation unless the34 scenario verifies motion or timing behavior.35- Wait for the observable state required by the scenario's expected result,36 such as a matching result card, success message, changed control state, or37 required network response. Do not use arbitrary delays; after a timed-out38 condition, report the blocked or failed validation instead of retrying it.39- Inspect only the target form or container with40 `playwright-browser_evaluate` or a targeted41 `playwright-browser_snapshot`. Assert the relevant controls or results within42 that target; do not use page-wide text, `document.body.innerText`, broad43 element scans, or `document.querySelectorAll('*')` as passing evidence.44 Broader inspection is permitted only to diagnose a failed or blocked test,45 and the reason must be reported.46- Prefer `playwright-browser_fill_form` for ordinary field entry. Use47 `playwright-browser_type` only when the scenario needs keyboard events, such48 as per-character autocomplete behavior.49- Prefer normal user-like Playwright actions. Programmatic DOM events are50 diagnostic only and do not prove that an interaction is usable.51- When analytics or `dataLayer` events can precede navigation, attach the event52 listener before the triggering action and capture the result in the same53 script to avoid losing it as the page unloads.54- Use `playwright-browser_run_code_unsafe` for multi-step browser flows or55 structured `dataLayer` capture, especially when batching avoids tool56 round-trips.57- When recording `dataLayer` evidence, provide structured results: event58 counts, relevant field presence, and a representative payload.59- Do not take screenshots unless verifying an explicit layout requirement or60 documenting a visual failure.61- Inspect console output only at `warning` or `error` level. Inspect network62 activity only for `4xx` or `5xx` failures, and omit request or response63 payloads unless diagnosing an error. Distinguish third-party noise from64 application failures.65- If Playwright fails to initialize, report the failure and retry once. Do not66 silently switch tools.6768Use Chrome DevTools only when Playwright is confirmed unavailable or when the69scenario specifically needs performance tracing, Lighthouse, LCP/Core Web70Vitals analysis, or JavaScript breakpoints.7172When Chrome DevTools is used:7374- Prefer DOM snapshots over screenshots for inspection.75- Use DOM-based locating before clicking.76- Batch related operations and form inputs where possible.77- Navigate directly to target URLs rather than through global navigation.78- Avoid unnecessary reloads; reuse the current page state.79- Use screenshots only for visual verification.80- Run Lighthouse only when the user explicitly requests it.81- Filter network requests to `4xx` and `5xx` failures, and console output to82 warnings and errors unless broader evidence is needed. Do not include request83 or response payloads unless diagnosing an error.84- Prefer a wait condition over arbitrary delays and do not poll after a timed85 out wait.86- Hard-refresh with cache bypass when verifying freshly deployed assets.87- If DevTools reports a transport or initialization failure, switch directly88 to Playwright without repeated retries.8990## Form-submission safety9192- Use `adorado@tireweb.com` in every email field when testing form submission.93- Never submit a production form without the user's explicit approval.94- When a submission must not reach the server, intercept it before triggering95 the action and verify both the request and resulting UI state.9697## Authenticated browser sessions9899- Navigate to the login screen and pause when authentication is required.100- The user must enter credentials and complete multi-factor authentication101 directly in the same browser session. Never request, receive, store, or102 enter credentials or authentication codes.103- Continue only after the user confirms authentication is complete.104- If the session expires or another authentication challenge appears, pause105 again for the user rather than attempting to bypass it.106- Prefer a dedicated non-production test account for repeatable testing when107 one is available.108109## Staging assets110111For browser-served static assets deployed to staging, verify the public staging112URL with cache bypass, such as a timestamp query parameter, and compare the113response hash to the approved deployment asset when the deployment workflow114supports it. Do not treat an upload alone as browser verification.115116## Validation reporting117118Report browser test outcomes as a compact status block:119120`Status: Pass/Fail | Target URL: <URL> | Failing Selectors/Errors: <details or none>`121122Report PASS, FAIL, or BLOCKED per scenario. Keep automated-test results separate123from supplemental checks, classify conflicting outcomes explicitly, and list124coverage limitations. Include detail only when needed to reproduce or explain a125failure.