Ao escrever ou revisar código de frontend (incluindo React Native) que será testado por QA (E2E com WebdriverIO/Appium), garantir que a interface permita seletores estáveis: testID, accessibilityLabel, roles acessíveis. Evitar dependência de posição no DOM ou classes de estilo.
Objetivo
Frontend que permita aos testes localizar e interagir com elementos de forma rápida e estável, sem XPaths frágeis como div[1]/div[2]/input.
Contexto do projeto (React Native / App)
Os testes E2E usam testID (Android: id=, iOS: ~) via helper getElementByTestID e texto / accessibilityLabel via getElementByText e getElementByAccessibilityLabel.
Garantir que elementos interativos tenham testID estável e documentado (ex.: login-enter-with-phone-button, login-phone-input) para que os screenobjects e specs os localizem de forma confiável.
Formulários
Labels: Associar cada input a um label (acessibilidade); em React Native, usar accessibilityLabel quando não houver label visível.
Evitar inputs sem nome acessível; os testes usam getElementByText ou testID.
Placeholder: Manter estável ou documentar; testes podem usar placeholder como fallback.
Botões e links
Usar texto visível ou accessibilityLabel estável para que os testes usem getElementByText ou getElementByTestID.
Evitar botões/links só com ícone sem accessibilityLabel.
testID (principal hook no projeto)
Usar testID em elementos que os testes precisam localizar (botões, inputs, listas, itens de lista).
Convenção estável e documentada (ex.: home-category-{name}, login-send-code-button). Os testes usam getElementByTestID('login-send-code-button').
Não exagerar; preferir testID em elementos de interação e em containers que precisem ser encontrados (ex.: scrollviews).
Evitar
XPath por posição: Seletores que quebram quando o layout ou a estrutura mudam.
Classes de estilo como único hook: Nomes minificados ou hasheados mudam entre builds; não depender deles para seletores de teste.
Textos ou placeholders que mudam com i18n sem fallback estável (testID ou accessibilityLabel) para os testes.
Loading e feedback
Expor estados claros para os testes aguardarem (ex.: botão desabilitado, elemento de loading com testID, mensagem de sucesso com texto ou testID estável).
Mensagens de sucesso/erro: usar texto estável ou testID para que os testes façam assert com getElementByText ou getElementByTestID + waitForDisplayed.
Checklist ao escrever ou revisar
Elementos interativos têm testID estável (e/ou accessibilityLabel quando aplicável).
Formulários: inputs com label ou accessibilityLabel.
Botões e links com texto visível ou aria-label/accessibilityLabel.
testID usado onde os testes precisam localizar; convenção estável.
Nenhum seletor crítico depende apenas de ordem de div ou classes de estilo.
Estados de loading e resultado são detectáveis (testID ou texto estável).
Converted and distributed by TomeVault — claim your Tome and manage your conversions.
1---2name: rondleysg-qa-agents-wdio-skill-frontend-qa-friendly3description: Frontend QA-friendly4---56# Frontend QA-friendly78Ao escrever ou revisar código de frontend (incluindo React Native) que será testado por QA (E2E com WebdriverIO/Appium), garantir que a interface permita **seletores estáveis**: testID, accessibilityLabel, roles acessíveis. Evitar dependência de posição no DOM ou classes de estilo.910## Objetivo1112Frontend que permita aos testes localizar e interagir com elementos de forma rápida e estável, sem XPaths frágeis como `div[1]/div[2]/input`.1314## Contexto do projeto (React Native / App)1516- Os testes E2E usam **testID** (Android: `id=`, iOS: `~`) via helper `getElementByTestID` e **texto** / **accessibilityLabel** via `getElementByText` e `getElementByAccessibilityLabel`.17- Garantir que elementos interativos tenham **testID** estável e documentado (ex.: `login-enter-with-phone-button`, `login-phone-input`) para que os screenobjects e specs os localizem de forma confiável.1819## Formulários2021- **Labels:** Associar cada input a um label (acessibilidade); em React Native, usar `accessibilityLabel` quando não houver label visível.22- Evitar inputs sem nome acessível; os testes usam `getElementByText` ou testID.23- **Placeholder:** Manter estável ou documentar; testes podem usar placeholder como fallback.2425## Botões e links2627- Usar texto visível ou `accessibilityLabel` estável para que os testes usem `getElementByText` ou `getElementByTestID`.28- Evitar botões/links só com ícone sem accessibilityLabel.2930## testID (principal hook no projeto)3132- Usar **testID** em elementos que os testes precisam localizar (botões, inputs, listas, itens de lista).33- Convenção estável e documentada (ex.: `home-category-{name}`, `login-send-code-button`). Os testes usam `getElementByTestID('login-send-code-button')`.34- Não exagerar; preferir testID em elementos de interação e em containers que precisem ser encontrados (ex.: scrollviews).3536## Evitar3738- **XPath por posição:** Seletores que quebram quando o layout ou a estrutura mudam.39- **Classes de estilo como único hook:** Nomes minificados ou hasheados mudam entre builds; não depender deles para seletores de teste.40- **Textos ou placeholders que mudam com i18n** sem fallback estável (testID ou accessibilityLabel) para os testes.4142## Loading e feedback4344- Expor estados claros para os testes aguardarem (ex.: botão desabilitado, elemento de loading com testID, mensagem de sucesso com texto ou testID estável).45- Mensagens de sucesso/erro: usar texto estável ou testID para que os testes façam assert com `getElementByText` ou `getElementByTestID` + `waitForDisplayed`.4647## Checklist ao escrever ou revisar4849- [ ] Elementos interativos têm testID estável (e/ou accessibilityLabel quando aplicável).50- [ ] Formulários: inputs com label ou accessibilityLabel.51- [ ] Botões e links com texto visível ou aria-label/accessibilityLabel.52- [ ] testID usado onde os testes precisam localizar; convenção estável.53- [ ] Nenhum seletor crítico depende apenas de ordem de div ou classes de estilo.54- [ ] Estados de loading e resultado são detectáveis (testID ou texto estável).5556---57> Converted and distributed by [TomeVault](https://tomevault.io/claim/rondleysg) — claim your Tome and manage your conversions.58<!-- tomevault:4.0:skill_md:2026-04-14 -->
Run npx skillmds@latest add tomevault-io/rondleysg-qa-agents-wdio-skill-frontend-qa-friendly in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
Frontend QA-friendly It is listed under Web & Frontend on SkillMD.
This skill has not completed SkillMD's automated safety review yet. Independent scanners report: SkillSpector: PASS, Skill Scanner: PASS. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Yes. Installing skills from SkillMD is free, and the skill stays under its author's original license.
tomevault-io (@tomevault-io) published this skill. Their other Agent Skills are listed on their SkillMD profile.