Preparation for editorial workflow test
This commit is contained in:
parent
cef86ef937
commit
8219098f67
14
README.md
14
README.md
|
@ -6,7 +6,19 @@ Pour utiliser :
|
|||
|
||||
```bash
|
||||
npm install
|
||||
npm test
|
||||
|
||||
# lancer les tests authentic sur un environnement local (*.dev.publik.love)
|
||||
npm run test-devinst -- tests/authentik.feature
|
||||
|
||||
# lancer les tests workflow-editorial sur l'instance de recette de Nîmes
|
||||
## Remplacer les valeurs USERNAME et PASSWORD par le mot de passe à utilise
|
||||
## Pour le compte Agent de cette plateforme
|
||||
export PUBLIK_URL='https://{}-nimes.test.entrouvert.org'
|
||||
export PUBLIK_Agente_USERNAME='aberriot'
|
||||
export PUBLIK_Agente_PASSWORD='passw0rd'
|
||||
|
||||
npm run test -- features/workflow-editorial.feature
|
||||
|
||||
```
|
||||
|
||||
Cela devrait lancer un navigateur et exécuter les étapes de test implémentées dans `features/*.feature`.
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
Fonctionnalité: Authentik
|
||||
Scénario: Connexion valide
|
||||
Sachant que je suis sur la page "Portail Usager - Accueil"
|
||||
Sachant que je suis sur la page "Portail Usager"
|
||||
Et que je clique sur "Connexion"
|
||||
Lorsque je saisis "admin@localhost" dans le champ "username"
|
||||
Et que je saisis "admin" dans le champ "password"
|
||||
|
@ -12,7 +12,7 @@ Fonctionnalité: Authentik
|
|||
Alors je ne dois pas être connectée
|
||||
|
||||
Scénario: Authentification échouée
|
||||
Sachant que je suis sur la page "Portail Usager - Accueil"
|
||||
Sachant que je suis sur la page "Portail Usager"
|
||||
Et que je clique sur "Connexion"
|
||||
Lorsque je saisis "admin@localhost" dans le champ "username"
|
||||
Et que je saisis "invalide" dans le champ "password"
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
const assert = require('assert')
|
||||
|
||||
const { Given, When, Then, After, AfterAll, setDefaultTimeout} = require('@cucumber/cucumber');
|
||||
const { By, Key } = require('selenium-webdriver');
|
||||
|
||||
|
@ -11,17 +9,48 @@ setDefaultTimeout(5 * 1000);
|
|||
const driver = getDriver()
|
||||
driver.manage().window().maximize()
|
||||
|
||||
let PAGES = {
|
||||
'Portail Usager - Accueil': process.env.PUBLIK_PORTAIL_USAGER || 'https://combo.dev.publik.love'
|
||||
const PUBLIK_URL = process.env.PUBLIK_URL || 'https://{}.dev.publik.love'
|
||||
const PUBLIK_IS_DEV_INSTANCE = (process.env.PUBLIK_IS_DEV_INSTANCE || 'false') === 'true'
|
||||
const PUBLIK_PORTAIL_USAGER = PUBLIK_IS_DEV_INSTANCE ? 'combo' : process.env.PUBLIK_PORTAIL_USAGER
|
||||
const PUBLIK_PORTAIL_AGENT = PUBLIK_IS_DEV_INSTANCE ? 'noop' : process.env.PUBLIK_PORTAIL_AGENT
|
||||
const PAGES = {
|
||||
'Portail Usager': PUBLIK_URL.replace('{}', PUBLIK_PORTAIL_USAGER || 'portail'),
|
||||
'Portail Agent': PUBLIK_URL.replace('{}', PUBLIK_PORTAIL_AGENT || 'agents'),
|
||||
}
|
||||
console.log('Available pages:', PAGES)
|
||||
console.log('Launching tests...')
|
||||
|
||||
function sleep(time) {
|
||||
return new Promise(resolve => setTimeout(resolve, time));
|
||||
}
|
||||
|
||||
function getUrlFromPage(pageName) {
|
||||
return PAGES[pageName]
|
||||
}
|
||||
|
||||
async function getElementByText(driver, text) {
|
||||
return await driver.findElement(By.xpath(`//*[contains(text(), "${text}")]`));
|
||||
}
|
||||
|
||||
async function getCurrentUser(driver) {
|
||||
let usernameLink
|
||||
try {
|
||||
usernameLink = await driver.findElement(By.className('connected-user'));
|
||||
} catch (e) {
|
||||
if(e.name === 'NoSuchElementError') {
|
||||
// maybe we're on the agent portal, try with other selector
|
||||
usernameLink = await driver.findElement(By.className('ui-name'));
|
||||
} else {
|
||||
throw e
|
||||
}
|
||||
}
|
||||
let username = await usernameLink.getText()
|
||||
return username
|
||||
}
|
||||
|
||||
Given("je suis sur la page {string}", async function (pageName) {
|
||||
await driver.get(getUrlFromPage(pageName));
|
||||
let url = getUrlFromPage(pageName)
|
||||
await driver.get(url);
|
||||
});
|
||||
|
||||
When('je saisis {string} dans le champ {string}', async function (text, field) {
|
||||
|
@ -36,13 +65,11 @@ When('je valide le formulaire', async function () {
|
|||
|
||||
|
||||
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)
|
||||
expect(await getCurrentUser(driver)).to.equal(expectedUsername)
|
||||
});
|
||||
|
||||
When('je clique sur {string}', async function (text) {
|
||||
let element = await driver.findElement(By.xpath(`//*[contains(text(), "${text}")]`));
|
||||
let element = await getElementByText(driver, text)
|
||||
await element.sendKeys(Key.RETURN);
|
||||
});
|
||||
|
||||
|
@ -55,6 +82,16 @@ Then('la page doit afficher {string}', async function (text) {
|
|||
let element = await driver.findElement(By.xpath(`//*[contains(text(), "${text}")]`));
|
||||
});
|
||||
|
||||
Given("je suis connectée en tant que {string}", async function (role) {
|
||||
let homeUrl = getUrlFromPage('Portail Agent')
|
||||
let username = process.env[`PUBLIK_${role}_USERNAME`] || role
|
||||
let password = process.env[`PUBLIK_${role}_PASSWORD`] || 'password'
|
||||
await driver.get(homeUrl)
|
||||
await (await driver.findElement(By.name('username'))).sendKeys(username)
|
||||
await (await driver.findElement(By.name('password'))).sendKeys(password, Key.RETURN)
|
||||
expect(await getCurrentUser(driver)).to.not.be.empty
|
||||
});
|
||||
|
||||
AfterAll(async function(){
|
||||
await driver.quit();
|
||||
});
|
|
@ -0,0 +1,5 @@
|
|||
Fonctionnalité: Gestion de contenu éditorial
|
||||
Contexte:
|
||||
Sachant que je suis connectée en tant que "Agente"
|
||||
Scénario: Ajout d'une fiche
|
||||
Lorsque je suis sur la page "Portail Agent"
|
|
@ -4,7 +4,8 @@
|
|||
"description": "",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "cucumber-js --language fr"
|
||||
"test": "cucumber-js --language fr",
|
||||
"test-devinst": "PUBLIK_URL= PUBLIK_IS_DEV_INSTANCE=true cucumber-js --language fr"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
|
|
Loading…
Reference in New Issue