Skip to content

Commit 6c4265f

Browse files
committed
test(e2e): refactorisation des tests avec mise en commun de certaines fonctions + utilisation d'une variable pour indiquer la source du chatbot qu'on utilise pour le test
1 parent a1d1e92 commit 6c4265f

7 files changed

Lines changed: 48 additions & 43 deletions

File tree

features/conversation/ask_questions_in_natural_language.feature

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,18 @@ Feature: Poser des questions au chatbot en langage naturel
55

66
@chatbot-base
77
Scenario: Question sur la licence de ChatMD
8-
Given Je suis sur le site de ChatMD
8+
Given Je lance ChatMD ""
99
When Je demande quelle licence ChatMD utilise
1010
Then Le chatbot répond que ChatMD est sous licence MIT
1111

1212
@chatbot-philosophyDissertation
1313
Scenario: Question sur la structure thèse-antithèse-synthèse dans une dissertation de philosophie
14-
Given J'utilise le chatbot pour la méthodologie d'une dissertation de philosophie
14+
Given Je lance ChatMD "#dissertation-philo"
1515
When Je demande si je peux utiliser une structure thèse-antithèse-synthèse
1616
Then Le chatbot explique que la structure thèse-antithèse-synthèse n'est pas appropriée pour une dissertation de philosophie
1717

1818
@chatbot-base
1919
Scenario: Question sur un sujet non couvert par le chatbot
20-
Given Je suis sur le site de ChatMD
20+
Given Je lance ChatMD ""
2121
When Je pose une question qui n'est pas dans la base de connaissances
2222
Then Le chatbot répond qu'il ne peut pas répondre à cette question car il n'a pas l'information

features/conversation/click_on_choice_options_buttons.feature

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ Feature: Cliquer sur les boutons des options de choix
55

66
@chatbot-base
77
Scenario: Cliquer sur un bouton d'option de choix
8-
Given Je suis sur le site de ChatMD
8+
Given Je lance ChatMD ""
99
When Je clique sur un bouton d'option de choix après le message initial
1010
Then Le chatbot répond en fonction de l'option choisie
1111

1212
@chatbot-base @chatbot-philosophyDissertation
1313
Scenario: Cliquer sur une suite d'options de choix
14-
Given J'utilise le chatbot pour la méthodologie d'une dissertation de philosophie
14+
Given Je lance ChatMD "#dissertation-philo"
1515
When Je clique sur une suite d'options de choix
1616
Then Le chatbot répond en fonction de la suite d'options choisies

features/conversation/control_the_typewriter_effect.feature

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,6 @@ Feature: Contrôler l'effet de machine à écrire
55

66
@chatbot-base
77
Scenario: Appuyer sur la touche Entrée
8-
Given Je suis sur le site de ChatMD
8+
Given Je lance ChatMD ""
99
And J'appuie sur la touche Entrée
1010
Then Le texte de présentation de ChatMD s'affiche d'un coup

tests/e2e/.config/steps_file.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
// in this file you can append custom step methods to 'I' object
22

3+
// on import la fonction decodeString depuis app/js/utils/strings.mjs
4+
const { encodeString } = require("../../../app/js/utils/strings.mjs");
5+
36
module.exports = function () {
47
return actor({
58
// Define custom steps here, use 'this' to access default methods of I.
@@ -9,5 +12,27 @@ module.exports = function () {
912
this.fillField("#user-input", txt);
1013
this.click("#send-button");
1114
},
15+
loadAchatbot: async function (src) {
16+
if (src === "#") {
17+
this.amOnPage("");
18+
return;
19+
}
20+
21+
// Si la source commence par # suivi immédiatmeent d'un caractère qui n'est pas un espace
22+
if (/^#\S/.test(src)) {
23+
this.amOnPage(src);
24+
return;
25+
}
26+
27+
// Si la source commence par http
28+
if (/^https?:\/\//.test(src)) {
29+
this.amOnPage(src);
30+
return;
31+
}
32+
33+
// Dernière possibilité : la source est un texte brut, on l'encode en base64 et on le passe en paramètre src)
34+
const decodedSrc = encodeString(src);
35+
this.amOnPage(decodedSrc);
36+
},
1237
});
1338
};

tests/e2e/step_definitions/clicks.js

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,5 @@
11
const { I } = inject();
22

3-
Given("Je suis sur le site de ChatMD", async () => {
4-
I.amOnPage("");
5-
I.see("ChatMD");
6-
});
7-
83
When(
94
"Je clique sur un bouton d'option de choix après le message initial",
105
() => {
@@ -19,30 +14,22 @@ Then("Le chatbot répond en fonction de l'option choisie", () => {
1914
I.waitForText("On peut imaginer de nombreux usages", 10);
2015
});
2116

22-
Given(
23-
"J'utilise le chatbot pour la méthodologie d'une dissertation de philosophie",
24-
() => {
25-
I.amOnPage("#dissertation-philo");
26-
I.see("La dissertation en philosophie");
27-
},
28-
);
29-
3017
When("Je clique sur une suite d'options de choix", () => {
3118
I.pressKey("Enter");
32-
I.waitForElement(".message .messageOptions li:first-child a", 0.5);
19+
I.waitForElement(".message .messageOptions li:first-child a", 1);
3320
I.click(".message .messageOptions li:first-child a");
3421
I.pressKey("Enter");
3522

3623
I.waitForElement(
3724
".message:nth-of-type(3) .messageOptions li:nth-child(2) a",
38-
0.5,
25+
1,
3926
);
4027
I.click(".message:nth-of-type(3) .messageOptions li:nth-child(2) a");
4128
I.pressKey("Enter");
4229

4330
I.waitForElement(
4431
".message:nth-of-type(5) .messageOptions li:nth-child(3) a",
45-
0.5,
32+
1,
4633
);
4734
I.click(".message:nth-of-type(5) .messageOptions li:nth-child(3) a");
4835
I.pressKey("Enter");
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
const { I } = inject();
2+
3+
Given("Je lance ChatMD {string}", async (hash) => {
4+
const src = hash ? hash.trim() : "#";
5+
I.loadAchatbot(src);
6+
});
7+
8+
Given("J'appuie sur la touche Entrée", () => {
9+
I.pressKey("Enter");
10+
});
11+
12+
Given("J'appuie sur le bouton “Envoyer”", () => {
13+
I.click("#send-button");
14+
});

tests/e2e/step_definitions/conversation.js

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,6 @@ const { I } = inject();
22

33
import { config } from "../../../app/js/config.mjs";
44

5-
Given("Je suis sur le site de ChatMD", async () => {
6-
I.amOnPage("");
7-
I.see("ChatMD");
8-
});
9-
105
When("Je demande quelle licence ChatMD utilise", () => {
116
I.askTheChatbot("quelle est la licence de ChatMD ?");
127
});
@@ -16,14 +11,6 @@ Then("Le chatbot répond que ChatMD est sous licence MIT", () => {
1611
I.waitForText("licence MIT", 10);
1712
});
1813

19-
Given(
20-
"J'utilise le chatbot pour la méthodologie d'une dissertation de philosophie",
21-
() => {
22-
I.amOnPage("#dissertation-philo");
23-
I.see("La dissertation en philosophie");
24-
},
25-
);
26-
2714
When(
2815
"Je demande si je peux utiliser une structure thèse-antithèse-synthèse",
2916
() => {
@@ -38,18 +25,10 @@ Then(
3825
},
3926
);
4027

41-
Given("J'appuie sur la touche Entrée", () => {
42-
I.pressKey("Enter");
43-
});
44-
4528
Then("Le texte de présentation de ChatMD s'affiche d'un coup", () => {
4629
I.waitForText("Qui a créé ChatMD ?", 1);
4730
});
4831

49-
Given("J'appuie sur le bouton “Envoyer”", () => {
50-
I.click("#send-button");
51-
});
52-
5332
When("Je pose une question qui n'est pas dans la base de connaissances", () => {
5433
I.askTheChatbot("Qu'est-ce qu'un bronchiosaure ?");
5534
});

0 commit comments

Comments
 (0)