React Testing
affaan-m/ECC
React component testing with React Testing Library, Vitest/Jest, MSW for network mocking, accessibility assertions with axe, and the decision boundary between component tests and Playwright/Cypress…
Write E2E tests for BEEQ StencilJS components using @stencil/vitest in browser mode (Playwright/Chromium).
$ npx skills add Endava/BEEQ --skill write-e2e-tests -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Endava/BEEQ write-e2e-tests --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/Endava/BEEQ.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/write-e2e-tests .claude/skills/write-e2e-tests && 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 "write-e2e-tests" agent skill from https://github.com/Endava/BEEQ/tree/main/.agents/skills/write-e2e-tests into .claude/skills/write-e2e-tests/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-e2e-tests", 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/Endava/BEEQ/tree/main/.agents/skills/write-e2e-testsType 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 Endava/BEEQ --skill write-e2e-tests -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Endava/BEEQ write-e2e-tests --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Endava/BEEQ.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/write-e2e-tests .agents/skills/write-e2e-tests && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "write-e2e-tests" agent skill from https://github.com/Endava/BEEQ/tree/main/.agents/skills/write-e2e-tests into .agents/skills/write-e2e-tests/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-e2e-tests", 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 Endava/BEEQ --skill write-e2e-tests -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Endava/BEEQ write-e2e-tests --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Endava/BEEQ.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/write-e2e-tests .cursor/skills/write-e2e-tests && 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 "write-e2e-tests" agent skill from https://github.com/Endava/BEEQ/tree/main/.agents/skills/write-e2e-tests into .cursor/skills/write-e2e-tests/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-e2e-tests", 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/Endava/BEEQ.git --path .agents/skills/write-e2e-tests--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 Endava/BEEQ --skill write-e2e-tests -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Endava/BEEQ write-e2e-tests --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Endava/BEEQ.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/write-e2e-tests .gemini/skills/write-e2e-tests && 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 "write-e2e-tests" agent skill from https://github.com/Endava/BEEQ/tree/main/.agents/skills/write-e2e-tests into .gemini/skills/write-e2e-tests/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-e2e-tests", 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 Endava/BEEQ write-e2e-testsInstalls 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 Endava/BEEQ --skill write-e2e-tests -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Endava/BEEQ.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/write-e2e-tests .github/skills/write-e2e-tests && 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 "write-e2e-tests" agent skill from https://github.com/Endava/BEEQ/tree/main/.agents/skills/write-e2e-tests into .github/skills/write-e2e-tests/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-e2e-tests", 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 Endava/BEEQ --skill write-e2e-tests -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Endava/BEEQ write-e2e-tests --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Endava/BEEQ.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/write-e2e-tests .opencode/skills/write-e2e-tests && 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 "write-e2e-tests" agent skill from https://github.com/Endava/BEEQ/tree/main/.agents/skills/write-e2e-tests into .opencode/skills/write-e2e-tests/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-e2e-tests", 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.
write-e2e-testsWrite E2E tests for BEEQ StencilJS components using @stencil/vitest in browser mode (Playwright/Chromium).
Write E2E Tests is an agent skill from Endava/BEEQ. Write E2E tests for BEEQ StencilJS components using @stencil/vitest in browser mode (Playwright/Chromium). Use for: adding or fixing E2E tests, covering props, events, slots, methods, keyboard interactions, accessibility attributes, and CSS custom properties for bq- components. Files live at packages/beeq/src/components/<name/tests/bq-<name.e2e.tsx.
Its SKILL.md is about 1.3k 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 End-to-end testing, React components and Unit testing. It works with Playwright and Vitest. The repository describes itself as: BEEQ Design System, a web component library ruled by Endavan developers :). The licence is Apache-2.0.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 5f4728d. 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:
pnpmFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use 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.
Write E2E Tests loads about 1.3k tokens when it runs. Until then it costs about 94 tokens; SKILL.md has 276 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 found no risky patterns in SKILL.md.
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 Endava/BEEQ at commit 5f4728d, republished under its Apache-2.0 licence (© Endava). 276 words, ~1,348 tokens.
.claude/skills/write-e2e-tests/SKILL.md (or your agent's skills folder).bq-* component.tsx file to understand all @Prop(), @Event(), @Method(), and @Listen() memberspackages/beeq/src/components/button/__tests__/bq-button.e2e.tsxpackages/beeq/src/components/<component-name>/__tests__/bq-<component-name>.e2e.tsxThe .e2e.tsx extension is required — JSX is needed even when no explicit JSX calls appear.
Use only what the test actually needs:
import { h } from '@stencil/core'; // always keep — required for JSX
// Core test utilities
import { afterEach, describe, expect, it, render, vi, waitForStable } from '@stencil/vitest';
import { userEvent } from 'vitest/browser'; // only for keyboard/mouse interactions
// BEEQ shared helpers
import { computedStyle } from '../../../shared/test-utils/computedStyle'; // CSS assertions
import { getTextContent } from '../../../shared/utils/slot'; // slot text assertionsor check what other utils are available in packages/beeq/src/shared/test-utils/ and packages/beeq/src/shared/utils/ and import as needed.
Every component file must start with:
describe('bq-<component>', () => {
it('should render', async () => {
const { root } = await render(<bq-component />);
expect(root).not.toBeNull();
});
it('should have shadow root', async () => {
const { root } = await render(<bq-component />);
expect(root).toHaveShadowRoot(); // ✅ always toHaveShadowRoot(), never .shadowRoot !== null
});Write at least one test for each category that applies to the component:
| Category | What to test |
|---|---|
| Props | Each @Prop() is reflected as an attribute (toEqualAttribute) |
| Slots | Default and named slots render expected content (getTextContent) |
| Events | Action triggers the event; vi.fn() spy counts invocations |
| Methods | Public @Method() produces expected side-effects |
| Keyboard | Tab, Enter, Space, Arrow keys trigger correct behavior (userEvent.keyboard) |
| State | Interactive state transitions: checked, disabled, expanded, loading |
| Accessibility | aria-* attributes present and correct |
| CSS | Critical custom properties computed correctly (computedStyle) |
Define typed accessors outside the describe block:
const getInput = (el: HTMLBqCheckboxElement) =>
el.shadowRoot?.querySelector<HTMLInputElement>('[part="input"]');
const getBase = (el: HTMLBqCheckboxElement) =>
el.shadowRoot?.querySelector<HTMLElement>('[part="base"]');Always cast root before accessing typed properties or passing to typed helpers:
// ✅ correct
const bqButton = root as HTMLBqButtonElement;
const btn = getButtonElement(bqButton);
// ❌ wrong — root is HTMLElement, not the concrete type
const btn = getButtonElement(root);Cast querySelector results with a generic parameter:
// ✅ correct
const input = bqToggle.shadowRoot?.querySelector<HTMLInputElement>('input');
// ❌ wrong — returns Element, not HTMLInputElement
const input = bqToggle.shadowRoot?.querySelector('input') as HTMLInputElement;Prefer setProps for re-rendering; fall back to direct property + waitForChanges:
// ✅ preferred
const { root, setProps } = await render(<bq-drawer />);
await setProps({ open: true });
// ✅ also correct
const { root, waitForChanges } = await render(<bq-drawer />);
(root as HTMLBqDrawerElement).open = true;
await waitForChanges();// After async operations (icon load, animation, slot change):
await waitForStable(root);
// After setting an attribute:
root.setAttribute('name', 'check');
await waitForChanges();
await waitForStable(root);| Goal | Matcher |
|---|---|
| Attribute present | expect(el).toHaveAttribute('attr') |
| Attribute + value | expect(el).toEqualAttribute('attr', value) — not toHaveAttribute with 2 args |
| Attribute absent | expect(el).not.toHaveAttribute('attr') |
| CSS class present | expect(el).toHaveClass('class-name') |
Always restore mocks:
afterEach(() => {
vi.restoreAllMocks();
});# Run all unit tests
pnpm exec nx run beeq:e2e
# Run tests for a specific file
pnpm exec nx run beeq:e2e -- bq-<component>.e2e.tsx
# Watch mode
pnpm exec nx run beeq:e2e -- bq-<component>.e2e.tsx --watch© Endava, Apache-2.0. 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 .agents/skills/write-e2e-tests of Endava/BEEQ.
Open the folder on GitHubat commit 5f4728d
Write E2E Tests 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 |
|---|---|---|---|---|---|---|
| Write E2E Tests this skillEndava/BEEQ | 163 | — | ~1.3k | Automated safety check: Pass | Apache-2.0 | |
| React Testingaffaan-m/ECC | 274k | 1 repos | ~3.3k | Automated safety check: Pass | MIT | |
| Svelte Testingspences10/sveltest | 113 | — | ~579 | Automated safety check: Pass | MIT | |
| Playwright Testingchongdashu/vibejam-starter-pack | 149 | — | ~2.1k | Automated safety check: Pass | None | |
| Ha Frontend Testinghome-assistant/frontend | 5.7k | — | ~1.7k | Automated safety check: Pass | Apache-2.0 | |
| Playwright Testingchongdashu/vibejam-starter-pack | 149 | — | ~2.2k | Automated safety check: Pass | None |
affaan-m/ECC
React component testing with React Testing Library, Vitest/Jest, MSW for network mocking, accessibility assertions with axe, and the decision boundary between component tests and Playwright/Cypress…
spences10/sveltest
Fix and create Svelte 5 tests with vitest-browser-svelte and Playwright.
chongdashu/vibejam-starter-pack
Plan, implement, and debug frontend tests: unit/integration/E2E/visual/a11y.
home-assistant/frontend
Home Assistant frontend testing and validation workflow. An agent skill from home-assistant/frontend.
chongdashu/vibejam-starter-pack
Plan, implement, and debug frontend tests: unit/integration/E2E/visual/a11y.
ansible/ansible-ui
Write, run, and debug Playwright E2E / integration / live tests.
Endava/BEEQ
Builds, styles, and reviews UI with BEEQ, Endava's web-component design system.
Endava/BEEQ
Create a new BEEQ StencilJS web component. An agent skill from Endava/BEEQ.
Endava/BEEQ
Audit and fix WCAG 2.1 Level AA accessibility issues in BEEQ StencilJS components.
Endava/BEEQ
Review a BEEQ StencilJS component against design system guidelines and project standards.
Endava/BEEQ
Write Storybook stories and MDX docs for BEEQ web components.
Endava/BEEQ
Write Vitest unit tests for BEEQ shared utilities. An agent skill from Endava/BEEQ.
Works with
Categories
Write E2E tests for BEEQ StencilJS components using @stencil/vitest in browser mode (Playwright/Chromium). Write E2E Tests is an agent skill from Endava/BEEQ. Write E2E tests for BEEQ StencilJS components using @stencil/vitest in browser mode (Playwright/Chromium).
Write E2E Tests fits situations like: fixing E2E tests; keyboard interactions; accessibility attributes; CSS custom properties for bq- components.
Run `npx skills add Endava/BEEQ --skill write-e2e-tests -a claude-code`. Or copy the skill folder (.agents/skills/write-e2e-tests in Endava/BEEQ) into .claude/skills/write-e2e-tests in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Endava/BEEQ --skill write-e2e-tests -a codex`. Or copy the skill folder (.agents/skills/write-e2e-tests in Endava/BEEQ) into .agents/skills/write-e2e-tests 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 Endava/BEEQ --skill write-e2e-tests -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/write-e2e-tests, .gemini/skills/write-e2e-tests, .github/skills/write-e2e-tests and .opencode/skills/write-e2e-tests in your project.
Going by SKILL.md and its folder, Write E2E Tests needs the command-line tools its instructions call (pnpm).
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Write E2E Tests is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.3k tokens (SKILL.md is roughly 5.4k 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 Write E2E Tests: React Testing (affaan-m/ECC, 274k stars), Svelte Testing (spences10/sveltest, 113 stars), Playwright Testing (chongdashu/vibejam-starter-pack, 149 stars) and Ha Frontend Testing (home-assistant/frontend, 5.7k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Endava (a GitHub organization) maintains it in Endava/BEEQ, which has 163 GitHub stars. The repository holds 9 skills in this directory. The repository was last updated on October 6, 2026.
Source: Endava/BEEQ on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.