Convert Playwright tests to and from Eggplant (SenseTalk), OpenTest.AI, Testers.AI Recorder, Testers.AI Dynamic, Selenium, and Cypress. Handles Playwright TypeScript/JavaScript (primary), Python, Java, and .NET bindings; `@playwright/test` runner idioms (`test`, `test.describe`, `test.beforeEach`, fixtures, `test.step`, `expect`). Use whenever the user wants to migrate a Playwright suite, translate a single spec, or round-trip Playwright through another framework. MANDATORY TRIGGERS — "convert Playwright", "Playwright to Selenium", "Playwright to Cypress", "Playwright to Eggplant", "migrate Playwright", "translate playwright spec", "port Playwright", "Playwright → OpenTest.AI", "Playwright to Testers.AI", or any mention of Playwright alongside any of the supported targets.
설치
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
Convert Playwright tests to and from Eggplant (SenseTalk), OpenTest.AI, Testers.AI Recorder, Testers.AI Dynamic, Selenium, and Cypress. Handles Playwright TypeScript/JavaScript (primary), Python, Java, and .NET bindings; `@playwright/test` runner idioms (`test`, `test.describe`, `test.beforeEach`, fixtures, `test.step`, `expect`). Use whenever the user wants to migrate a Playwright suite, translate a single spec, or round-trip Playwright through another framework. MANDATORY TRIGGERS — "convert Playwright", "Playwright to Selenium", "Playwright to Cypress", "Playwright to Eggplant", "migrate Playwright", "translate playwright spec", "port Playwright", "Playwright → OpenTest.AI", "Playwright to Testers.AI", or any mention of Playwright alongside any of the supported targets.
Converts tests from Playwright to any supported target, and to Playwright from another framework. Defers orchestration, target semantics, and cross-framework rules to the open-testing-convert master skill.
When to use
Trigger when:
The user references a Playwright codebase, spec file, or snippet and asks to migrate or translate it.
The user asks to convert to Playwright from Selenium, Cypress, a Testers.AI recording, or a natural-language format (OpenTest.AI, Testers.AI Dynamic).
The user uploads a .spec.ts, .spec.js, .test.ts, .test.js, .py, .java, or .cs file containing @playwright/test, playwright.chromium.launch, page.locator, page.getByRole, await page.goto, etc.
A playwright.config.ts / playwright.config.js is present.
How to use
Read the master orchestrator first. Open ../open-testing-convert/SKILL.md and follow its step order (detect source → detect target → resolve language → delegate to this skill → read target primer → validate output).
Confirm target and language. The master's language-policy.md governs language choice (default: preserve source language unless the user requests otherwise). For Playwright the source language is one of TypeScript, JavaScript, Python, Java, or .NET/C#.
For Selenium reverse: consult ../open-testing-convert-selenium/reference/source-profile.md for emission shape in each language.
For Cypress: shared/wait-strategies.md §Cypress and shared/assertion-mapping.md Cypress column.
Read this skill's reference files:
reference/source-profile.md — what Playwright tests look like across bindings.
reference/extraction.md — how to extract canonical test intent from Playwright code.
reference/mappings.md — per-target translation tables and worked examples.
Read shared references as needed:open-testing-convert/reference/shared/{locator-mapping,wait-strategies,assertion-mapping,lifecycle-mapping}.md.
Emit the converted test(s) according to the target primer's Emission Checklist. Produce a preamble summarising: source file, detected binding/runner, target, language choice, any TODOs.
Scope
@playwright/test runner (v1.x) — primary.
Library-only usage (playwright without the test runner) — supported; lifecycle must be synthesized from the user's own scaffolding (Mocha/Jest/etc.).
Playwright for Python (playwright.sync_api / playwright.async_api) and pytest-playwright.
Playwright for Java (com.microsoft.playwright.*).
Playwright for .NET (Microsoft.Playwright.*).
Fixtures, parameterised projects, test.use({ ... }) overrides, and test.step() annotations.
Out of scope (delegate to sibling skills)
Playwright-BDD / playwright-bdd integration with Cucumber: use open-testing-convert-cucumber (it invokes this skill for the step-implementation layer).
Component testing (@playwright/experimental-ct-react and friends): emit as-is with a preamble flag; component-scoped behaviour does not map cleanly to Selenium/Cypress/Eggplant.
Quick reference: Playwright verbs and their canonical conversions