Skip to content

Commit

Permalink
feat: add mechanism for reusable scenarios, #198
Browse files Browse the repository at this point in the history
  • Loading branch information
stanlee974 committed Aug 12, 2023
1 parent e15c975 commit 36d31f3
Show file tree
Hide file tree
Showing 32 changed files with 480 additions and 132 deletions.
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -43,12 +43,16 @@ testem.log
Thumbs.db
*.iml
packages/runner-cypress/cypress/screenshots/
packages/runner-cypress/generated
packages/runner-cypress/e2e/generated
packages/docs/docs/03-wordings/01-generated-wording-description/


packages/runner-playwright/src/cucumber/step_definitions/playwright/generated/
packages/runner-playwright/reports/
packages/runner-playwright/tests/.features-gen
packages/runner-playwright/generated
packages/runner-playwright/e2e/generated
packages/docs/i18n/fr/docusaurus-plugin-content-docs/current/03-wordings/01-generated-wording-description/
packages/docs/static/assistant/uuv-assistant-resources.bundle.js
packages/docs/static/assistant/index.html
Expand Down
71 changes: 71 additions & 0 deletions packages/docs/docs/03-wordings/03-reusable-scenarios.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';

# Reusable scenarios

:::caution
**Only available for developers**

Reusable scenarios cannot be used in conjunction with each other
:::

## Create file with extension .playbook.feature
File with this extension contains reusable scenarios.

```gherkin title='uuv/e2e/playbook/template.playbook.feature'
@Ignore //Only used with playwright
Feature: Template
Scenario: I go to town list
When I visit path "https://e2e-test-quest.github.io/weather-app/"
And Within a button named "Get started"
And I click
Scenario: I select douala
When I visit path "https://e2e-test-quest.github.io/weather-app/"
And Within a button named "Get started"
And I click
And I reset context
And Within a list named "Available Towns"
And Within a list item named "Douala"
And I click
And I reset context
```

## Create a file with extension .playbooked.feature
Files with this extension contains scenarios using reusable scenarios.

```gherkin title='uuv/e2e/playbook/weatherApp.playbooked.feature'
@Ignore //Only used with playwright
Feature: Feature using reusable scenarios
Scenario: vital check on first page
Given I go to town list
Then I should see a title named "Nothing to display"
Scenario: vital check on second page
Given I select douala
Then Within the element with aria-label "Weather of Douala"
And I should see a title named "Douala"
And I should see an element with content "min: 10.8 °c"
```

## Launch script to generate executable feature
this script replace playbook scenarios name by playbook scenarios steps.

<Tabs>
<TabItem value="Npm" label="Npm">

```shell
npx uuv playbook
```

</TabItem>
<TabItem value="Yarn" label="Yarn">

```shell
yarn uuv playbook
```

</TabItem>
</Tabs>
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';

# Scénarios réutilisables

:::caution
**Disponible seulement pour les développeurs**

Les scénarios réutilisables ne peuvent être utilisés entre eux.
:::

## Créer un fichier avec l'extension .playbook.feature
Les fichiers avec cette extension contiennent des scénarios réutilisables

```gherkin title='uuv/e2e/playbook/template.playbook.feature'
@Ignore //Seulement utile avec playwright
#language: fr
Fonctionnalité: Template
Scénario: j'aille à la liste des villes
Lorsque je visite l'Url "https://e2e-test-quest.github.io/weather-app/"
Et je vais à l'intérieur de bouton nommé "Get started"
Et je clique
Scénario: je sélectionne douala
Lorsque je visite l'Url "https://e2e-test-quest.github.io/weather-app/"
Et je vais à l'intérieur de bouton nommé "Get started"
Et je clique
Et je reinitialise le contexte
Et je vais à l'intérieur de liste nommée "Available Towns"
Et je vais à l'intérieur de élément de liste nommé "Douala"
Et je clique
Et je reinitialise le contexte
```

## Créer un fichier avec l'extension .playbooked.feature
Les fichiers avec cet extension contiennent des scénarios utilisant les scénarios réutilisables

```gherkin title='uuv/e2e/playbook/weatherApp.playbooked.feature'
@Ignore //Seulement utile avec playwright
#language: fr
Fonctionnalité: Fonctionnalité utilisant les scénarios réutilisables
Scénario: vérification vital de la première page
Etant donné que j'aille à la liste des villes
Alors je dois voir un titre nommé "Nothing to display"
Scénario: vérification vital de la seconde page
Etant donné que je sélectionne douala
Lorsque je vais à l'intérieur de l'élément ayant pour aria-label "Weather of Douala"
Alors je dois voir un titre nommé "Douala"
Et je dois voir un élément qui contient "min: 10.8 °c"
```

## Lancement du script de génération de feature éxecutable
Ce script remplace les noms de scénarios des playbooks par les étapes de scénarios des playbooks.

<Tabs>
<TabItem value="Npm" label="Npm">

```shell
npx uuv playbook
```

</TabItem>
<TabItem value="Yarn" label="Yarn">

```shell
yarn uuv playbook
```

</TabItem>
</Tabs>
2 changes: 1 addition & 1 deletion packages/runner-commons/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
export * from "./step-definition-generator/common";
export * from "./step-definition-generator/generate-step-definitions";
export * from "./step-definition-generator/generate-step-definitions-documentation";
export * from "./step-definition-generator/generate-playbook-step-definitions";
export * from "./runner/step-definitions/_constant";
export * from "./runner/step-definitions/_i-context";
export * from "./runner/formatter/uuv-custom-formatter";
import key from "./assets/i18n/template.json";
export { key };
113 changes: 0 additions & 113 deletions packages/runner-commons/src/runner/formatter/uuv-custom-formatter.ts

This file was deleted.

27 changes: 26 additions & 1 deletion packages/runner-commons/src/step-definition-generator/common.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
*/

import fs from "fs";
import glob from "glob";

export { fs };

Expand Down Expand Up @@ -43,7 +44,14 @@ export enum TEST_RUNNER_ENUM {

export enum STEP_DEFINITION_FILE_NAME {
BASE = "base-check-engine",
BY_ROLE = "based-role-check-engine"
BY_ROLE = "based-role-check-engine",
BY_SCENARIO_TEMPLATE = "_playbook-engine",
}

export enum UUV_ENVELOPE {
PLAYBOOK = "playbook.feature",
PLAYBOOKED = "playbooked.feature",
PLAYBOOKED_GEN = "playbooked.generated.feature",
}

export enum KEY_PRESS {
Expand Down Expand Up @@ -98,4 +106,21 @@ export class Common {
`[WRITE] ${generatedFile} written successfully`
);
}

static getFileList(dirName) {
let files : string[] = [];
const items = fs.readdirSync(dirName, { withFileTypes: true });
for (const item of items) {
if (item.isDirectory()) {
files = [
...files,
...(Common.getFileList(`${dirName}/${item.name}`)),
];
} else {
files.push(`${dirName}/${item.name}`);
}
}

return files;
}
}
Loading

0 comments on commit 36d31f3

Please sign in to comment.