{"id":"e8a2831d-729f-485d-8c23-0c016f7bf5c2","shortId":"MaeZS7","kind":"skill","title":"e2e","tagline":"Write end-to-end tests for user flows using Cypress. Use when user asks to \"write e2e tests\", \"/e2e\", \"add Cypress tests\", or wants to test a user flow end-to-end. Don't use for unit tests, component tests, or projects using Playwright, Puppeteer, or other non-Cypress frameworks.","description":"# End-to-End Tests (Cypress)\n\n## Detection\n\nRun in parallel:\n\n- Check `package.json` for `cypress` version\n- Read `cypress.config.ts` for baseUrl and test file patterns\n- Read 1-2 existing test files in `cypress/e2e/` to match conventions\n\n## Workflow\n\n1. Read existing tests and config to match project style\n2. Understand the user flow — ask if unclear\n3. Identify selectors (see [selectors.md](references/selectors.md))\n4. Write tests in `cypress/e2e/` — one file per flow or feature\n\n## Format\n\n```typescript\ndescribe('login flow', () => {\n  beforeEach(() => {\n    cy.visit('/login')\n  })\n\n  it('logs in with valid credentials', () => {\n    cy.findByLabelText('Email').type('user@example.com')\n    cy.findByLabelText('Password').type('password')\n    cy.findByRole('button', { name: 'Sign in' }).click()\n    cy.url().should('include', '/dashboard')\n    cy.findByRole('heading', { name: 'Dashboard' }).should('be.visible')\n  })\n\n  it('shows error with invalid credentials', () => {\n    cy.findByLabelText('Email').type('wrong@example.com')\n    cy.findByLabelText('Password').type('wrong')\n    cy.findByRole('button', { name: 'Sign in' }).click()\n    cy.findByRole('alert').should('contain.text', 'Invalid credentials')\n  })\n})\n```\n\n## Selector priority\n\nPrefer `@testing-library/cypress` commands when installed:\n\n1. `cy.findByRole('button', { name: 'Submit' })` — best\n2. `cy.findByLabelText('Email')` — forms\n3. `cy.findByText('Welcome')` — text content\n4. `cy.get('[data-testid=\"submit\"]')` — last resort\n\nSee [selectors.md](references/selectors.md) for full guide.\n\n## Rules\n\n- Use `@testing-library/cypress` selectors when available, else `cy.get`\n- Use `data-testid` only as last resort\n- One logical outcome per `it` block\n- Test behavior, not implementation details\n- Never use `cy.wait(<number>)` — use `cy.findBy*` auto-retry instead\n\n## Error Handling\n\n- If `cypress` is not in `package.json` → stop and ask user to install Cypress first\n- If `cypress.config.ts` is missing → ask user to run `npx cypress open` to initialize config\n- If `baseUrl` is unreachable → verify the dev server is running before writing tests that require it","tags":["e2e","agent","skills","helderberto","agent-skills","ai-tools","antigravity","claude-code","cursor","developer-tools","gemini-cli","markdown"],"capabilities":["skill","source-helderberto","skill-e2e","topic-agent-skills","topic-ai-tools","topic-antigravity","topic-claude-code","topic-cursor","topic-developer-tools","topic-gemini-cli","topic-markdown","topic-plugin","topic-sdlc","topic-skills","topic-tracer-bullet"],"categories":["agent-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/helderberto/agent-skills/e2e","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add helderberto/agent-skills","source_repo":"https://github.com/helderberto/agent-skills","install_from":"skills.sh"}},"qualityScore":"0.454","qualityRationale":"deterministic score 0.45 from registry signals: · indexed on github topic:agent-skills · 8 github stars · SKILL.md body (2,146 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:09:13.214Z","embedding":null,"createdAt":"2026-05-18T13:14:53.282Z","updatedAt":"2026-05-18T19:09:13.214Z","lastSeenAt":"2026-05-18T19:09:13.214Z","tsv":"'-2':80 '/cypress':195,233 '/dashboard':156 '/e2e':21 '/login':132 '1':79,90,199 '2':100,205 '3':108,209 '4':114,214 'add':22 'alert':184 'ask':16,105,277,287 'auto':264 'auto-retri':263 'avail':236 'baseurl':73,298 'be.visible':162 'beforeeach':130 'behavior':254 'best':204 'block':252 'button':148,178,201 'check':65 'click':152,182 'command':196 'compon':42 'config':95,296 'contain.text':186 'content':213 'convent':88 'credenti':138,168,188 'cy.findby':262 'cy.findbylabeltext':139,143,169,173,206 'cy.findbyrole':147,157,177,183,200 'cy.findbytext':210 'cy.get':215,238 'cy.url':153 'cy.visit':131 'cy.wait':260 'cypress':12,23,53,60,68,270,281,292 'cypress.config.ts':71,284 'cypress/e2e':85,118 'dashboard':160 'data':217,241 'data-testid':216,240 'describ':127 'detail':257 'detect':61 'dev':303 'e2e':1,19 'els':237 'email':140,170,207 'end':4,6,33,35,56,58 'end-to-end':3,32,55 'error':165,267 'exist':81,92 'featur':124 'file':76,83,120 'first':282 'flow':10,31,104,122,129 'form':208 'format':125 'framework':54 'full':226 'guid':227 'handl':268 'head':158 'identifi':109 'implement':256 'includ':155 'initi':295 'instal':198,280 'instead':266 'invalid':167,187 'last':220,245 'librari':194,232 'log':134 'logic':248 'login':128 'match':87,97 'miss':286 'name':149,159,179,202 'never':258 'non':52 'non-cypress':51 'npx':291 'one':119,247 'open':293 'outcom':249 'package.json':66,274 'parallel':64 'password':144,146,174 'pattern':77 'per':121,250 'playwright':47 'prefer':191 'prioriti':190 'project':45,98 'puppet':48 'read':70,78,91 'references/selectors.md':113,224 'requir':311 'resort':221,246 'retri':265 'rule':228 'run':62,290,306 'see':111,222 'selector':110,189,234 'selectors.md':112,223 'server':304 'show':164 'sign':150,180 'skill' 'skill-e2e' 'source-helderberto' 'stop':275 'style':99 'submit':203,219 'test':7,20,24,28,41,43,59,75,82,93,116,193,231,253,309 'testid':218,242 'testing-librari':192,230 'text':212 'topic-agent-skills' 'topic-ai-tools' 'topic-antigravity' 'topic-claude-code' 'topic-cursor' 'topic-developer-tools' 'topic-gemini-cli' 'topic-markdown' 'topic-plugin' 'topic-sdlc' 'topic-skills' 'topic-tracer-bullet' 'type':141,145,171,175 'typescript':126 'unclear':107 'understand':101 'unit':40 'unreach':300 'use':11,13,38,46,229,239,259,261 'user':9,15,30,103,278,288 'user@example.com':142 'valid':137 'verifi':301 'version':69 'want':26 'welcom':211 'workflow':89 'write':2,18,115,308 'wrong':176 'wrong@example.com':172","prices":[{"id":"a7589840-fea3-40eb-978b-981cb9ab1321","listingId":"e8a2831d-729f-485d-8c23-0c016f7bf5c2","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"helderberto","category":"agent-skills","install_from":"skills.sh"},"createdAt":"2026-05-18T13:14:53.282Z"}],"sources":[{"listingId":"e8a2831d-729f-485d-8c23-0c016f7bf5c2","source":"github","sourceId":"helderberto/agent-skills/e2e","sourceUrl":"https://github.com/helderberto/agent-skills/tree/main/skills/e2e","isPrimary":false,"firstSeenAt":"2026-05-18T13:14:53.282Z","lastSeenAt":"2026-05-18T19:09:13.214Z"}],"details":{"listingId":"e8a2831d-729f-485d-8c23-0c016f7bf5c2","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"helderberto","slug":"e2e","github":{"repo":"helderberto/agent-skills","stars":8,"topics":["agent-skills","ai","ai-tools","antigravity","claude-code","cursor","developer-tools","gemini-cli","markdown","plugin","sdlc","skills","tracer-bullet"],"license":"mit","html_url":"https://github.com/helderberto/agent-skills","pushed_at":"2026-05-14T11:37:47Z","description":"My personal SDLC toolbelt for AI coding agents — PRD to ship.","skill_md_sha":"ac68521b437a1010ac620deeba4bcb6dd4f7f2a1","skill_md_path":"skills/e2e/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/helderberto/agent-skills/tree/main/skills/e2e"},"layout":"multi","source":"github","category":"agent-skills","frontmatter":{"name":"e2e","description":"Write end-to-end tests for user flows using Cypress. Use when user asks to \"write e2e tests\", \"/e2e\", \"add Cypress tests\", or wants to test a user flow end-to-end. Don't use for unit tests, component tests, or projects using Playwright, Puppeteer, or other non-Cypress frameworks."},"skills_sh_url":"https://skills.sh/helderberto/agent-skills/e2e"},"updatedAt":"2026-05-18T19:09:13.214Z"}}