Skip to content

Latest commit

 

History

History
103 lines (75 loc) · 3.93 KB

testing-with-selenium-webdriverjs.md

File metadata and controls

103 lines (75 loc) · 3.93 KB

Note du traducteur

C'est la traduction du fichier testing-with-selenium-webdriverjs.md. Voici un lien vers les différences avec le master de AVA (Si en cliquant sur le lien, vous ne trouvez pas le fichier testing-with-selenium-webdriverjs.md parmi les fichiers modifiés, vous pouvez donc en déduire que la traduction est à jour).


Configuration d'AVA avec Selenium webDriverjs

Cette recette vous montre comment utiliser Selenium WebDriverjs (implémentation officielle en JavaScript) avec AVA pour tester les applications web.

Installation

Cette recette utilise les packages suivants :

  1. selenium-webdriver
  2. chromedriver

Installez-les ainsi :

$ npm install selenium-webdriver chromedriver

Dans le cadre de cette recette, nous utiliserons Selenium pour vérifier les recherches web sur Bing et Google.

Créez les fichiers suivants :

  • ./test/bingtest.js
  • ./test/googletest.js

Dans les deux fichiers, incluons d'abord les packages :

import test from 'ava';
import {Builder, By, Key, until} from 'selenium-webdriver';
import 'chromedriver';

Dans le fichier bingtest.js, ajoutez le code suivant, qui teste si la recherche pour le terme « webdriver » sur Bing, retourne des résultats.

test('Bing Search', async t => {
	const keyword = 'webdriver';
	const driver = new Builder().forBrowser('chrome').build();
	await driver.get('https://www.bing.com');
	await driver.findElement(By.name('q')).sendKeys(keyword + Key.ENTER);
	await driver.wait(until.titleIs(keyword + ' - Bing'));
	t.true((await driver.findElements(By.css('#b_content #b_results li'))).length > 0);
	await driver.close();
});

Dans le fichier googlest.js, au lieu d'un seul test, ajoutons deux tests, un pour le terme « webdriver » et l'autre pour « avajs ».

Puisque nous souhaitons initialiser le webdriver avant chaque test, nous utilisons les hooks beforeEach et afterEach pour respectivement configurer et nettoyer le pilote.L'utilisation de ces hooks aide à réduire la quantité de code que nous écrivions dans chaque test().

test.beforeEach(async t => {
	t.context.driver = new Builder().forBrowser('chrome').build();
	await t.context.driver.get('https://www.google.com');
});

test.afterEach('cleanup', async t => {
	await t.context.driver.close();
});

Maintenant, ajoutons le code de test :

async function searchGoogle(driver, keyword) {
	await driver.findElement(By.name('q')).sendKeys(keyword + Key.ENTER);
	await driver.wait(until.titleIs(`${keyword} - Google Search`));
}

test('Google Search for avajs', async t => {
	const {driver} = t.context;
	await searchGoogle(driver, 'avajs');
	t.true((await driver.findElement(By.id('resultStats')).getText()).includes('results'));
});

test('Google Search for webdriver', async t => {
	const {driver} = t.context;
	await searchGoogle(driver, 'webdriver');
	t.true((await driver.findElement(By.id('resultStats')).getText()).includes('results'));
});

Vous êtes maintenant prêt à exécuter les tests. La sortie devrait ressembler à quelque chose comme ceci :

npx ava
DevTools listening on ws://127.0.0.1:49720/devtools/browser/9ebf4394-447b-4916-91cc-692d06d88896

DevTools listening on ws://127.0.0.1:49756/devtools/browser/6e19d9fe-4de6-40a3-b120-17067b3125ca

DevTools listening on ws://127.0.0.1:49757/devtools/browser/ac12c2da-eeed-40d8-9b23-4d2103ec8fac

  bingtest » Bing Search (7.2s)
  googletest » Google Search for avajs (2.5s)
  googletest » Google Search for webdriver (3.3s)

  3 tests passed