AI Skill Report Card
PlannerVersi E2E QA Testing
Quick Start13 / 15
JavaScript// Login and navigate to page await page.goto('http://localhost:3000'); await page.fill('#email', 'teste@vp6.com.br'); await page.fill('#password', 'teste2026'); await page.click('[type="submit"]'); await page.waitForSelector('.ant-menu'); // Navigate to target page await page.click('text=Target Page'); await page.waitForSelector('.ant-table, .ant-form'); // Validate initial load const networkRequests = await page.evaluate(() => window.g_app._store.getState() );
Recommendation▾
Remove technical jargon from description - 'React/UmiJS/DVA frontend, Redux state, Django/DRF backend' adds unnecessary complexity
Workflow12 / 15
Pre-execution Checklist
- Parse page name from user input
- Parse scope (FRONTEND/BACKEND/AMBOS)
- Parse credentials (default: teste@vp6.com.br)
- Parse organization if required
- Parse specific functionalities to test
- Display confirmation block
Execution Order
- Authentication
- Route mapping in config/routes.ts
- Component mapping
- Extract endpoints and Redux states
- Navigate to page
- Select enterprise/version/module
- Validate initial load (Network + Redux + DOM)
- Execute functional tests (CRUD)
- Force fresh refetch validation
- Version/module switching regression
- Generate final report
Recommendation▾
Quick Start should show a complete minimal test execution from start to finish, not just authentication snippets
Examples15 / 20
Example 1: Frontend-only test Input: "teste a tela Associativo frontend" Output: Full UI flow validation with Redux state checking
Example 2: Backend-only test Input: "valide Taxa de Administração backend only" Output: Direct API testing without browser interaction
Example 3: Full E2E test Input: "execute teste E2E da página Curva de Vendas" Output: Complete frontend + backend validation with persistence checks
Recommendation▾
Examples need concrete input/output pairs with actual API responses and Redux state values, not just 'Output: Full UI flow validation'
Best Practices
React Input Helpers for Masked Fields
JavaScriptwindow.__setMaskedCurrency = (selector, value) => { const el = document.querySelector(selector); const setter = Object.getOwnPropertyDescriptor( HTMLInputElement.prototype, 'value' ).set; setter.call(el, Math.round(Number(value) * 100).toString()); el.dispatchEvent(new Event('input', { bubbles: true })); el.dispatchEvent(new Event('change', { bubbles: true })); };
Table Reading Helper
JavaScript() => Array.from(document.querySelectorAll('.ant-table-row')).map(row => ({ key: row.getAttribute('data-row-key'), cells: Array.from(row.querySelectorAll('td')).map(cell => cell.innerText.trim()) }))
Redux State Validation
JavaScriptwindow.g_app._store.getState()
Network + Redux + DOM Cross-Validation
Always validate data consistency across all three layers before marking tests as passed.
Common Pitfalls
- Never trust UI success messages alone - Always validate persistence with fresh refetch
- Don't use fixed waits - Wait for specific elements or network requests
- Don't test with production data - Create and cleanup test data
- Don't skip version/module dependency validation - Many PlannerVersi pages depend on these selectors
- Don't ignore Redux state - UI might show cached data while backend failed
- Don't test CRUD without persistence validation - Save success ≠ data persisted
Report Structure
Markdownundefined
Página testada: [name]
- Escopo: [FRONTEND/BACKEND/AMBOS]
- Endpoints mapeados: [count]
- Bugs encontrados: [count]
- Status geral: [Aprovado/Aprovado com ressalvas/Reprovado]
Checklist
[✓/✗] Autenticação
[✓/✗] Carga inicial - Network
[✓/✗] CRUD - Adição
[✓/✗] CRUD - Edição
[✓/✗] CRUD - Deleção
[✓/✗] Persistência após refetch
Generate `correcoes.txt` file only when bugs are found, with specific file paths and code diffs for fixes.