ワンクリックで
gen-page-test
One-click generation of PageObject + matching tests. Trigger: new page, generate page, gen page, create page, add page object.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
One-click generation of PageObject + matching tests. Trigger: new page, generate page, gen page, create page, add page object.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Incrementally add regression test points to an existing PageObject. Trigger: add test point, add regression point, add test point, increase coverage, extend page methods.
POM layering and context sharing decision tree. Trigger: architecture, layering, POM, Page Object, base class design, add new role.
Browser viewport / headless / timeout layered configuration. Trigger: viewport, browser config, navigation timeout, headless, slow_mo, incognito.
Under a shared page, a test case that leaves the start page must return via the UI and assert. Trigger: round-trip closure, case round trip, reset timeout, scope shared page.
AST knowledge graph: change review, exploration, debugging, refactoring. Trigger: knowledge graph, code review, impact analysis, blast radius, refactoring.
Replace placeholder locators with real selectors (six-level priority). Trigger: replace locator, locator, selector, locator failed, element not found, DOM analysis.
User input: Generate a page object and tests for <PageName> (URL: https://...), test points: click A, fill B, view C
| Parameter | Required | Description | Example |
|---|---|---|---|
| Page name | Yes | Business name | Course Management Page |
| Page URL | Yes | Real accessible page URL (authenticated state) | https://example.com/xxx |
| Role | Yes | An existing role in the project (e.g. <role>) | Corresponding role |
| Class name | No (auto-derived) | PascalCase | <Role><Page>Page |
| Regression test points | Yes | Interaction elements to cover | Click create, search, delete |
Class name derivation rules:
Page suffix (e.g. <Feature>Page)<Role> + English translation → PascalCase + Page suffix (e.g. <Role><Feature>Page)<role>_ (e.g. <role>_<feature>_page.py)For the list of existing class names in the project, see docs/pages-catalog.md.
browser_navigate (prepend /entry?token=xxx if needed) → browser_snapshot → browser_evaluate to extract elements. Select stable locators using the six-level priority (P0 → P5) from locator-replacer.
Create pages/<snake_name>_page.py:
# Page name: <PageName>
from pages.base_page import BasePage
class <ClassName>(BasePage):
# Locators — from real page (<date>, URL: <page URL>)
<LOCATOR_1> = "<real locator>" # P<0-5>: description
<LOCATOR_2> = "<real locator>" # P<0-5>: description
PAGE_IDENTIFIER = "<page identifier locator>" # P<0-5>: description
def click_<method_1>(self):
self.click(self.<LOCATOR_1>)
def click_<method_2>(self):
self.click(self.<LOCATOR_2>)
def is_page_loaded(self) -> bool:
return self.is_visible(self.PAGE_IDENTIFIER)
pages/__init__.pyfrom pages.<snake_name>_page import <ClassName>
# Append "<ClassName>" to the __all__ list
Target file: the Test<Role>Flow class in the corresponding role's tests/<role>/test_<role>_flow.py (inheriting <Role>BaseTest).
Example for a role:
@allure.story("<Page Name>")
def test_<snake_name>(self):
page_obj = <ClassName>(self.<role>_page)
self.<role>_page.goto("<page URL>")
assert page_obj.is_page_loaded(), "<Page Name> failed to load"
page_obj.click_<method_1>()
...
If the navigation target leaves the portal layout, apply round-trip closure (see case-round-trip):
@allure.story("<Page Name>")
def test_<snake_name>(self):
self.<role>_home.click_<navigation>()
page_obj = <ClassName>(self.<role>_page)
assert page_obj.is_page_loaded(), "<Page Name> failed to load"
page_obj.click_<method_1>()
page_obj.click_back_to_<landing>()
assert self.<role>_home.is_page_loaded(), "Failed to return to start page"
pytest tests/<role>/test_<role>_flow.py --env=<pre|prod> -v -k "test_<snake_name>"
⚠️ Confirm --env with the user before running (see agent-behavior.md P0.2).
On failure → use locator-replacer to re-extract locators, or test-runner to analyze failure type.
docs/docs/pages-catalog.md: append new page class + method tabledocs/regression-points.md: append regression points table + key locator sectionGeneral checks (naming/imports/is_page_loaded/allure) → coding-conventions.md "New Test Checklist"
pytest tests/<role>/test_<role>_flow.py --env=<pre|prod> -v -k "test_<name>" passesdocs/pages-catalog.md has been updateddocs/regression-points.md has been updated