From 0bd33d6f00f135abfd2acd1cc981afcfb0a2f0a3 Mon Sep 17 00:00:00 2001 From: Jacek Kowalski <Jacek@jacekk.info> Date: Sat, 04 May 2019 13:08:27 +0000 Subject: [PATCH] Switch to Nightwatch.js for browser tests --- /dev/null | 45 --------------- tests/index.js | 31 ++++++++++ .travis.yml | 9 ++ nightwatch.conf.js | 50 ++++++++++++++++ 4 files changed, 88 insertions(+), 47 deletions(-) diff --git a/.travis.yml b/.travis.yml index 8bb4f98..399c72f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,10 +6,15 @@ - 7.0 - nightly +addons: + firefox: latest + chrome: stable + before_script: - 'php -S 127.0.0.1:8080 &' - 'nvm install stable' - - 'npm install casperjs' + - 'npm install nightwatch selenium-server chromedriver geckodriver' script: - - 'node_modules/casperjs/bin/casperjs test tests.js' + - 'node_modules/.bin/nightwatch -e chrome-headless' + - 'node_modules/.bin/nightwatch -e firefox-headless' diff --git a/nightwatch.conf.js b/nightwatch.conf.js new file mode 100644 index 0000000..4fef425 --- /dev/null +++ b/nightwatch.conf.js @@ -0,0 +1,50 @@ +var seleniumServer = require('selenium-server'); +var chromedriver = require('chromedriver'); +var geckodriver = require('geckodriver'); + +module.exports = { + src_folders: ['tests'], + selenium: { + start_process: true, + server_path: seleniumServer.path, + port: 4444, + cli_args: { + 'webdriver.chrome.driver': chromedriver.path, + 'webdriver.gecko.driver': geckodriver.path, + }, + }, + test_settings: { + 'chrome': { + desiredCapabilities: { + browserName: 'chrome', + }, + }, + 'chrome-headless': { + desiredCapabilities: { + browserName: 'chrome', + chromeOptions: { + args: [ + '--headless', + '--no-sandbox', + '--disable-gpu', + ], + }, + }, + }, + 'firefox': { + desiredCapabilities: { + browserName: 'firefox', + }, + }, + 'firefox-headless': { + desiredCapabilities: { + browserName: 'firefox', + 'moz:firefoxOptions': { + args: [ + '--headless', + ], + }, + }, + }, + }, +}; diff --git a/tests.js b/tests.js deleted file mode 100644 index d82b00b..0000000 --- a/tests.js +++ /dev/null @@ -1,45 +0,0 @@ -casper.test.begin('Stop name autocompletion', 4, function(test) { - casper.start('http://127.0.0.1:8080/', function() { - test.assertTitleMatches(/^TTSS\s/, 'Page title: TTSS...'); - }); - - var autocomplete_pairs = [ - ['bag', 'Teatr Bagatela'], - ['d g', 'Dworzec Główny'], - ['świę', 'Plac Wszystkich Świętych'], - ]; - - autocomplete_pairs.forEach(function(value) { - casper.then(function() { - this.sendKeys('#stop-name', value[0], {reset: true}); - }).wait(200, function() { - test.assertSelectorHasText( - '#stop-name-autocomplete > option', - value[1], - 'Autocomplete: ' + value[1] - ); - }); - }); - - casper.run(function() { - test.done(); - }); -}); - -casper.test.begin('Translation engine', 2, function(test) { - casper.start('http://127.0.0.1:8080/#!en', function() { - test.assertTitleMatches(/departures/i, 'Page title: ...departures...'); - }); - - casper.wait(200, function() { - test.assertSelectorHasText( - '[data-translate=header_line]', - 'Line', - 'Translation: Linia -> Line' - ); - }); - - casper.run(function() { - test.done(); - }); -}); diff --git a/tests/index.js b/tests/index.js new file mode 100644 index 0000000..c9827b0 --- /dev/null +++ b/tests/index.js @@ -0,0 +1,31 @@ +module.exports = { + 'Stop name autocompletion': function(browser) { + browser.url('http://127.0.0.1:8080/'); + browser.getTitle(function(title) { + this.assert.ok(title.includes('TTSS')); + }); + + var autocomplete_pairs = [ + ['baga', 'Teatr Bagatela'], + ['d g', 'Dworzec Główny'], + ['świę', 'Plac Wszystkich Świętych'], + ['św g', 'Św. Gertrudy'], + ['św.g', 'Św. Gertrudy'], + ]; + autocomplete_pairs.forEach(function(value) { + browser.clearValue('#stop-name'); + browser.setValue('#stop-name', value[0]); + browser.pause(200); + browser.expect.element('#stop-name-autocomplete > option:first-child').to.be.present.before(1000); + browser.expect.element('#stop-name-autocomplete > option:first-child').text.to.include(value[1]).before(1000); + }); + }, + 'Translation engine': function(browser) { + browser.url('http://127.0.0.1:8080/#!en'); + browser.pause(200); + browser.getTitle(function(title) { + this.assert.ok(title.includes('departures')); + }); + browser.expect.element('[data-translate=header_line]').text.to.include('Line'); + }, +}; -- Gitblit v1.9.1