Initial commit

This commit is contained in:
Agate 2022-11-16 15:41:22 +01:00
commit 663419bacf
7 changed files with 3179 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
node_modules

12
README.md Normal file
View File

@ -0,0 +1,12 @@
# Utilitaires de test pour les applications Publik
Bibliothèque permettant d'exécuter des spécifications fonctionnelles sous forme de test.
Pour utiliser :
```bash
npm install
npm test
```
Cela devrait lancer un navigateur et exécuter les étapes de test implémentées dans `features/*.feature`.

3
cucumber.js Normal file
View File

@ -0,0 +1,3 @@
module.exports = {
default: `--publish-quiet --format-options '{"snippetInterface": "synchronous"}'`
}

View File

@ -0,0 +1,22 @@
Fonctionnalité: Authentik
Contexte:
Sachant que je suis sur la page d'accueil de Combo
Scénario: Connexion valide
Sachant que je visite la page de connexion
Lorsque je saisis "admin@localhost" dans le champ "username"
Et que je saisis "admin" dans le champ "password"
Et que je valide le formulaire
Alors Je dois être connectée en tant que "admin admin"
Scénario: Déconnexion
Lorsque je clique sur "Déconnexion"
Alors Je dois ne dois pas être connecté
Scénario: Authentification échouée
Sachant que je visite la page de connexion
Lorsque je saisis "admin@localhost" dans le champ "username"
Et que je saisis "invalide" dans le champ "password"
Et que je valide le formulaire
Alors Je dois ne dois pas être connecté
Et la page doit afficher "Courriel ou mot de passe incorrect"

View File

@ -0,0 +1,58 @@
const assert = require('assert')
const { Given, When, Then, After, AfterAll, setDefaultTimeout} = require('@cucumber/cucumber');
const { Builder, By, Capabilities, Key } = require('selenium-webdriver');
const { expect } = require('chai');
setDefaultTimeout(5 * 1000);
require("chromedriver");
// driver setup
const capabilities = Capabilities.chrome();
capabilities.set('chromeOptions', { "w3c": false });
const driver = new Builder().withCapabilities(capabilities).build();
driver.manage().window().maximize()
Given("je suis sur la page d'accueil de Combo", async function () {
await driver.get('https://combo.dev.publik.love');
});
Given('je visite la page de connexion', async function () {
let element = await driver.findElement(By.className('login-link'));
await element.click();
});
When('je saisis {string} dans le champ {string}', async function (text, field) {
let element = await driver.findElement(By.name(field));
await element.sendKeys(text)
});
When('je valide le formulaire', async function () {
let currentField = await driver.switchTo().activeElement();
await currentField.sendKeys(Key.RETURN)
});
Then('Je dois être connectée en tant que {string}', async function (expectedUsername) {
let usernameLink = await driver.findElement(By.className('connected-user'));
let username = await usernameLink.getText()
expect(username).to.equal(expectedUsername)
});
When('je clique sur {string}', async function (text) {
let element = await driver.findElement(By.xpath(`//*[contains(text(), "${text}")]`));
await element.sendKeys(Key.RETURN);
});
Then('Je dois ne dois pas être connecté', async function () {
await driver.findElement(By.className('login-link'));
});
Then('la page doit afficher {string}', async function (text) {
let element = await driver.findElement(By.xpath(`//*[contains(text(), "${text}")]`));
});
AfterAll(async function(){
await driver.quit();
});

3065
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

18
package.json Normal file
View File

@ -0,0 +1,18 @@
{
"name": "app-testing",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "cucumber-js --language fr"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"@cucumber/cucumber": "^8.8.0",
"chai": "^4.3.7",
"chromedriver": "^107.0.3",
"selenium-webdriver": "^4.6.1"
}
}