Debug Playwright Prow
quay/quay
Deep-dive diagnosis of a Playwright test failure already isolated to one Quay Prow/OpenShift CI run: downloads its GCS artifacts (results.json, JUnit, build/pod logs, Jaeger traces), classifies real…
A skill your agent uses when the user says 'write browser tests', 'test this page', 'playwright test', 'e2e test', 'end to end test', 'browser test', 'test the UI', or needs Playwright-based browser…
$ npx skills add cwinvestments/memstack --skill memstack-development-webapp-testing -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install cwinvestments/memstack memstack-development-webapp-testing --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/cwinvestments/memstack.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/development/webapp-testing .claude/skills/memstack-development-webapp-testing && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "memstack-development-webapp-testing" agent skill from https://github.com/cwinvestments/memstack/tree/master/skills/development/webapp-testing into .claude/skills/memstack-development-webapp-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "memstack-development-webapp-testing", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/cwinvestments/memstack/tree/master/skills/development/webapp-testingType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add cwinvestments/memstack --skill memstack-development-webapp-testing -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install cwinvestments/memstack memstack-development-webapp-testing --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/cwinvestments/memstack.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/development/webapp-testing .agents/skills/memstack-development-webapp-testing && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "memstack-development-webapp-testing" agent skill from https://github.com/cwinvestments/memstack/tree/master/skills/development/webapp-testing into .agents/skills/memstack-development-webapp-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "memstack-development-webapp-testing", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add cwinvestments/memstack --skill memstack-development-webapp-testing -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install cwinvestments/memstack memstack-development-webapp-testing --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/cwinvestments/memstack.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/development/webapp-testing .cursor/skills/memstack-development-webapp-testing && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "memstack-development-webapp-testing" agent skill from https://github.com/cwinvestments/memstack/tree/master/skills/development/webapp-testing into .cursor/skills/memstack-development-webapp-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "memstack-development-webapp-testing", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/cwinvestments/memstack.git --path skills/development/webapp-testing--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add cwinvestments/memstack --skill memstack-development-webapp-testing -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install cwinvestments/memstack memstack-development-webapp-testing --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/cwinvestments/memstack.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/development/webapp-testing .gemini/skills/memstack-development-webapp-testing && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "memstack-development-webapp-testing" agent skill from https://github.com/cwinvestments/memstack/tree/master/skills/development/webapp-testing into .gemini/skills/memstack-development-webapp-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "memstack-development-webapp-testing", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install cwinvestments/memstack memstack-development-webapp-testingInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add cwinvestments/memstack --skill memstack-development-webapp-testing -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/cwinvestments/memstack.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/development/webapp-testing .github/skills/memstack-development-webapp-testing && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "memstack-development-webapp-testing" agent skill from https://github.com/cwinvestments/memstack/tree/master/skills/development/webapp-testing into .github/skills/memstack-development-webapp-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "memstack-development-webapp-testing", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add cwinvestments/memstack --skill memstack-development-webapp-testing -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install cwinvestments/memstack memstack-development-webapp-testing --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/cwinvestments/memstack.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/development/webapp-testing .opencode/skills/memstack-development-webapp-testing && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "memstack-development-webapp-testing" agent skill from https://github.com/cwinvestments/memstack/tree/master/skills/development/webapp-testing into .opencode/skills/memstack-development-webapp-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "memstack-development-webapp-testing", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
memstack-development-webapp-testingA skill your agent uses when the user says 'write browser tests', 'test this page', 'playwright test', 'e2e test', 'end to end test', 'browser test', 'test the UI', or needs Playwright-based browser…
Memstack Development Webapp Testing is an agent skill from cwinvestments/memstack. Use when the user says 'write browser tests', 'test this page', 'playwright test', 'e2e test', 'end to end test', 'browser test', 'test the UI', or needs Playwright-based browser testing for a web application. Do NOT use for unit tests, API tests, or non-browser testing.
Its SKILL.md is about 1.5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Testing & QA, covering Browser testing and Unit testing. It works with Playwright. The repository describes itself as: Structured skill framework for Claude Code. 130 skills, persistent memory, TokenStack compression, localhost dashboard with 3-agent runner, real-time streaming, MCP tools. The licence is MIT.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 00370ce. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
npxnpmpnpmplaywrightFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npx, npm and pnpm, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Memstack Development Webapp Testing loads about 1.5k tokens when it runs. Until then it costs about 77 tokens; SKILL.md has 340 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
| App URL | Check package.json scripts, .env, or ask | `http://localhost:3000` |Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from cwinvestments/memstack at commit 00370ce, republished under its MIT licence (© cwinvestments). 340 words, ~1,535 tokens.
.claude/skills/memstack-development-webapp-testing/SKILL.md (or your agent's skills folder).Produces Playwright end-to-end tests that verify real user flows in a browser.
| Trigger | Status |
|---|---|
| User says "write browser tests" or "playwright test" | ACTIVE |
| User says "test this page" or "e2e test" | ACTIVE |
| User says "test the UI" or "browser test" | ACTIVE |
| User wants unit tests or API tests | NOT this skill: use standard test patterns |
| User wants load testing | NOT this skill |
Determine what to test:
| Parameter | How to find | Example |
|---|---|---|
| App URL | Check package.json scripts, .env, or ask | http://localhost:3000 |
| Framework | Check package.json dependencies | Next.js, React, SvelteKit |
| Auth required? | Check for login pages, auth middleware | Yes/No |
| Key user flows | Ask or infer from routes | Sign up, checkout, search |
# Check if Playwright is already installed
cat package.json | grep -i playwright
# Check existing test structure
find . -name "*.spec.ts" -o -name "*.test.ts" | head -20npm init playwright@latest
# or
pnpm add -D @playwright/test
npx playwright installConfirm playwright.config.ts exists. If not, create with sensible defaults:
import { defineConfig, devices } from '@playwright/test';
export default defineConfig({
testDir: './tests/e2e',
fullyParallel: true,
forbidOnly: !!process.env.CI,
retries: process.env.CI ? 2 : 0,
workers: process.env.CI ? 1 : undefined,
reporter: 'html',
use: {
baseURL: 'http://localhost:3000',
trace: 'on-first-retry',
screenshot: 'only-on-failure',
},
projects: [
{ name: 'chromium', use: { ...devices['Desktop Chrome'] } },
],
webServer: {
command: 'npm run dev',
url: 'http://localhost:3000',
reuseExistingServer: !process.env.CI,
},
});Follow this structure per flow:
import { test, expect } from '@playwright/test';
test.describe('Feature Name', () => {
test('should [expected behavior] when [action]', async ({ page }) => {
// Arrange, navigate to the page
await page.goto('/path');
// Act, perform user actions
await page.getByRole('button', { name: 'Submit' }).click();
// Assert, verify the result
await expect(page.getByText('Success')).toBeVisible();
});
});Test writing rules:
getByRole, getByLabel, getByText over CSS selectors: they survive refactorstest.describe to group related flowstest.beforeEach for shared navigation/auth setupexpect with auto-waiting or waitForSelectorIf the app requires login:
// tests/e2e/auth.setup.ts
import { test as setup, expect } from '@playwright/test';
setup('authenticate', async ({ page }) => {
await page.goto('/login');
await page.getByLabel('Email').fill('test@example.com');
await page.getByLabel('Password').fill('testpassword');
await page.getByRole('button', { name: 'Sign in' }).click();
await expect(page).toHaveURL('/dashboard');
// Save signed-in state
await page.context().storageState({ path: '.auth/user.json' });
});Add to playwright.config.ts:
projects: [
{ name: 'setup', testMatch: /.*\.setup\.ts/ },
{
name: 'chromium',
use: {
...devices['Desktop Chrome'],
storageState: '.auth/user.json',
},
dependencies: ['setup'],
},
],Form validation:
test('should show validation errors for empty required fields', async ({ page }) => {
await page.goto('/form');
await page.getByRole('button', { name: 'Submit' }).click();
await expect(page.getByText('Email is required')).toBeVisible();
});Navigation flow:
test('should navigate from landing to pricing', async ({ page }) => {
await page.goto('/');
await page.getByRole('link', { name: 'Pricing' }).click();
await expect(page).toHaveURL('/pricing');
await expect(page.getByRole('heading', { name: 'Pricing' })).toBeVisible();
});API response verification:
test('should load and display data', async ({ page }) => {
await page.goto('/dashboard');
await expect(page.getByRole('table')).toBeVisible();
await expect(page.locator('tbody tr')).toHaveCount(10);
});# Run all tests
npx playwright test
# Run specific test file
npx playwright test tests/e2e/auth.spec.ts
# Run with UI mode for debugging
npx playwright test --ui
# Show HTML report
npx playwright show-reportPresent results:
Playwright tests written:
- [N] test files covering [N] user flows
- Auth setup: [yes/no]
- Flows tested: [list]
Run with: npx playwright test© cwinvestments, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/development/webapp-testing of cwinvestments/memstack.
Open the folder on GitHubat commit 00370ce
Memstack Development Webapp Testing next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Memstack Development Webapp Testing this skillcwinvestments/memstack | 423 | — | ~1.5k | Automated safety check: Notes | MIT | |
| Debug Playwright Prowquay/quay | 2.8k | — | ~2.2k | Automated safety check: Pass | Apache-2.0 | |
| Control UI E2Eopenclaw/openclaw | 392k | — | ~2.9k | Automated safety check: Pass | MIT | |
| Quay Prow Triagequay/quay | 2.8k | — | ~2.9k | Automated safety check: Pass | Apache-2.0 | |
| Ckeditor5 TestingTriliumNext/Trilium | 38k | — | ~3.3k | Automated safety check: Pass | AGPL-3.0 | |
| Check Visual Changesigrlk/storybook-addon-test-codegen | 154 | 1 repos | ~1.4k | Automated safety check: Pass | MIT |
quay/quay
Deep-dive diagnosis of a Playwright test failure already isolated to one Quay Prow/OpenShift CI run: downloads its GCS artifacts (results.json, JUnit, build/pod logs, Jaeger traces), classifies real…
openclaw/openclaw
A skill your agent uses when designing, testing, fixing, or extending the OpenClaw Control UI GUI, including UI stress-test galleries with feedback inputs, Vitest + Playwright end-to-end checks…
quay/quay
Diagnose any Quay Prow job failure end to end: prowjob.json - top-level build log - JUnit - resolved failing step - Playwright results.json when the failing step is Playwright, continuing through…
TriliumNext/Trilium
Testing CKEditor 5 plugins in the Trilium monorepo. An agent skill from TriliumNext/Trilium.
igrlk/storybook-addon-test-codegen
Check the visual impact of an edit mid-task with uiverify check — render just the components you're touching on the UI Verify fleet and diff them against the real CI baseline, without opening a PR…
Gnathonic/mokuro-reader
Verify reader features end-to-end by importing a synthetic volume through the real upload modal and driving the reader with Playwright.
cwinvestments/memstack
A skill your agent uses when the user says 'SEO audit', 'site audit', 'check SEO', 'audit my site', 'SEO check', 'technical SEO', or is evaluating a website's search engine optimization health, meta…
cwinvestments/memstack
A skill your agent uses when the user says 'add schema', 'schema markup', 'JSON-LD', 'structured data', 'rich results', 'rich snippets', or is adding or fixing schema.org structured data for better…
cwinvestments/memstack
A skill your agent uses when the user says 'tokenstack', 'compression', 'token savings', 'proxy status', or asks about context window usage.
cwinvestments/memstack
A skill your agent uses when the user says 'save diary', 'log session', 'wrapping up', or at end of a productive session.
cwinvestments/memstack
A skill your agent uses when the user references past sessions, asks 'what did we do', 'do you remember', 'last session', 'recall', or 'continue from'.
cwinvestments/memstack
A skill your agent uses when the user says 'dispatch', 'send familiar', 'split task', or needs work split across parallel CC sessions.
Works with
Categories
A skill your agent uses when the user says 'write browser tests', 'test this page', 'playwright test', 'e2e test', 'end to end test', 'browser test', 'test the UI', or needs Playwright-based browser…. Memstack Development Webapp Testing is an agent skill from cwinvestments/memstack. Use when the user says 'write browser tests', 'test this page', 'playwright test', 'e2e test', 'end to end test', 'browser test', 'test the UI', or needs Playwright-based browser testing for a web application.
Memstack Development Webapp Testing fits situations like: the user says write browser tests; playwright test; end to end test; needs Playwright-based browser testing for a web application.
Run `npx skills add cwinvestments/memstack --skill memstack-development-webapp-testing -a claude-code`. Or copy the skill folder (skills/development/webapp-testing in cwinvestments/memstack) into .claude/skills/memstack-development-webapp-testing in your project. Claude Code loads it when a task matches its description.
Run `npx skills add cwinvestments/memstack --skill memstack-development-webapp-testing -a codex`. Or copy the skill folder (skills/development/webapp-testing in cwinvestments/memstack) into .agents/skills/memstack-development-webapp-testing in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add cwinvestments/memstack --skill memstack-development-webapp-testing -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/memstack-development-webapp-testing, .gemini/skills/memstack-development-webapp-testing, .github/skills/memstack-development-webapp-testing and .opencode/skills/memstack-development-webapp-testing in your project.
Going by SKILL.md and its folder, Memstack Development Webapp Testing needs the command-line tools its instructions call (npx, npm, pnpm and playwright). Our summary lists: Node.js.
SKILL.md contains no URLs. Its commands use npx and npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Memstack Development Webapp Testing is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.5k tokens (SKILL.md is roughly 6.1k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Memstack Development Webapp Testing: Debug Playwright Prow (quay/quay, 2.8k stars), Control UI E2E (openclaw/openclaw, 392k stars), Quay Prow Triage (quay/quay, 2.8k stars) and Ckeditor5 Testing (TriliumNext/Trilium, 38k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
cwinvestments (a GitHub user) maintains it in cwinvestments/memstack, which has 423 GitHub stars. The repository holds 87 skills in this directory. The repository was last updated on September 26, 2026.
Source: cwinvestments/memstack on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.