Initial commit
This commit is contained in:
commit
663419bacf
|
@ -0,0 +1 @@
|
||||||
|
node_modules
|
|
@ -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`.
|
|
@ -0,0 +1,3 @@
|
||||||
|
module.exports = {
|
||||||
|
default: `--publish-quiet --format-options '{"snippetInterface": "synchronous"}'`
|
||||||
|
}
|
|
@ -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"
|
|
@ -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();
|
||||||
|
});
|
File diff suppressed because it is too large
Load Diff
|
@ -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"
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue