feat: palavra-chave BDD/Gherkin nos passos + export .feature #27

Closed
jhony75 wants to merge 1 commit from feature/bdd-gherkin-steps into develop
Owner

Passo de cenário (biblioteca, Report, Run) ganha palavra-chave opcional Given/When/Then/And/But. steps continua aceitando string simples (comportamento antigo) ou {description, keyword} — pode misturar os dois na mesma lista, sem quebrar quem já manda string hoje.

  • backend/gherkin_parser.py (novo, motor genérico, zero conceito de EEG): parse_gherkin extrai nome/descrição/passos de um texto colado em Gherkin (POST /api/scenarios/parse-gherkin, botão "Extrair como Gherkin" no mesmo fluxo de colar texto que já existia pro HubSpot); to_feature_text exporta um cenário da biblioteca como .feature de verdade (GET /api/scenario-templates/{id}/feature, botão na tela da Biblioteca).
  • Migration 4c8a1f9d2e63: coluna keyword em test_step_templates e test_run_steps.
  • Frontend: seletor de palavra-chave em ScenarioBuilder (compartilhado por Report/Run/Biblioteca — cria e edita passo em todo lugar), exibição com prefixo da palavra-chave onde já existia leitura de passo, botão .feature na Biblioteca.
  • Sobre Playwright (pedido explicitamente): o .feature exportado é Gherkin válido e conecta com Playwright via playwright-bdd, mas rodar isso de verdade contra o app ainda exige escrever as step definitions (o código que diz o que cada passo faz na tela) — isso é inerente ao BDD, não uma limitação do export. Não dá pra gerar step definitions executáveis a partir de texto livre.
  • Fora de escopo deliberadamente: Scenario Outline / tabela de Examples (dado parametrizado) — parser ignora essas linhas.
  • 11 testes novos (test_gherkin.py) + suíte completa (57 backend / 8 frontend) passando; verificado manualmente end-to-end (criar cenário com Given, exportar .feature, colar texto Gherkin e extrair Given/When/Then no ScenarioBuilder).
Passo de cenário (biblioteca, Report, Run) ganha palavra-chave opcional Given/When/Then/And/But. `steps` continua aceitando string simples (comportamento antigo) ou `{description, keyword}` — pode misturar os dois na mesma lista, sem quebrar quem já manda string hoje. - `backend/gherkin_parser.py` (novo, motor genérico, zero conceito de EEG): `parse_gherkin` extrai nome/descrição/passos de um texto colado em Gherkin (`POST /api/scenarios/parse-gherkin`, botão "Extrair como Gherkin" no mesmo fluxo de colar texto que já existia pro HubSpot); `to_feature_text` exporta um cenário da biblioteca como `.feature` de verdade (`GET /api/scenario-templates/{id}/feature`, botão na tela da Biblioteca). - Migration `4c8a1f9d2e63`: coluna `keyword` em `test_step_templates` e `test_run_steps`. - Frontend: seletor de palavra-chave em `ScenarioBuilder` (compartilhado por Report/Run/Biblioteca — cria e edita passo em todo lugar), exibição com prefixo da palavra-chave onde já existia leitura de passo, botão `.feature` na Biblioteca. - **Sobre Playwright** (pedido explicitamente): o `.feature` exportado é Gherkin válido e conecta com Playwright via `playwright-bdd`, mas rodar isso de verdade contra o app ainda exige escrever as step definitions (o código que diz o que cada passo faz na tela) — isso é inerente ao BDD, não uma limitação do export. Não dá pra gerar step definitions executáveis a partir de texto livre. - Fora de escopo deliberadamente: Scenario Outline / tabela de Examples (dado parametrizado) — parser ignora essas linhas. - 11 testes novos (`test_gherkin.py`) + suíte completa (57 backend / 8 frontend) passando; verificado manualmente end-to-end (criar cenário com Given, exportar .feature, colar texto Gherkin e extrair Given/When/Then no ScenarioBuilder).
feat: palavra-chave BDD/Gherkin nos passos de cenário + export .feature
Some checks failed
EEG QA CI / validate-and-build (pull_request) Failing after 1m24s
EEG QA CI / Deploy production (pull_request) Has been skipped
EEG QA CI / Deploy development (pull_request) Has been skipped
e3e5ffc0ef
Passo de cenário (biblioteca, Report, Run) ganha palavra-chave opcional
(Given/When/Then/And/But). steps continua aceitando string simples
(comportamento antigo) ou {description, keyword} — pode misturar os dois
na mesma lista, sem quebrar quem já manda string.

- gherkin_parser.py (novo, motor genérico): parse_gherkin extrai nome/
  descrição/passos de texto colado em Gherkin (POST /api/scenarios/
  parse-gherkin, botão "Extrair como Gherkin" no fluxo de colar texto que
  já existia); to_feature_text exporta um cenário da biblioteca como
  .feature de verdade (GET /api/scenario-templates/{id}/feature).
- Migration 4c8a1f9d2e63: keyword em test_step_templates e test_run_steps.
- Frontend: seletor de palavra-chave em todo lugar que cria/edita passo
  (ScenarioBuilder, compartilhado por Report/Run/Biblioteca), exibição
  com prefixo da palavra-chave onde já existia leitura, botão .feature na
  Biblioteca.
- Rodar o .feature de verdade (ex.: playwright-bdd) ainda exige escrever
  as step definitions — inerente ao BDD, não dá pra gerar isso a partir
  de texto livre.
- Scenario Outline/Examples (dado parametrizado) deliberadamente fora de
  escopo por ora.
jhony75 closed this pull request 2026-09-05 02:46:21 -03:00
Some checks failed
EEG QA CI / validate-and-build (pull_request) Failing after 1m24s
EEG QA CI / Deploy production (pull_request) Has been skipped
EEG QA CI / Deploy development (pull_request) Has been skipped

Pull request closed

Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
jhony75/eeg-qa!27
No description provided.