From 2e1809d00d6890d1634928673a7c14e4e9463618 Mon Sep 17 00:00:00 2001 From: Alister Scott Date: Tue, 11 Feb 2020 08:45:46 +1000 Subject: [PATCH] Add sequential specs --- package.json | 3 +- specs-seq/demo-spec-seq.js | 56 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 specs-seq/demo-spec-seq.js diff --git a/package.json b/package.json index a2811f4..23d5053 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,8 @@ }, "devDependencies": {}, "scripts": { - "test": "./node_modules/.bin/mocha-parallel-tests --require babel-core/register specs" + "test": "./node_modules/.bin/mocha-parallel-tests --require babel-core/register specs", + "testseq": "./node_modules/.bin/mocha --require babel-core/register specs-seq" }, "repository": { "type": "git", diff --git a/specs-seq/demo-spec-seq.js b/specs-seq/demo-spec-seq.js new file mode 100644 index 0000000..e399f5d --- /dev/null +++ b/specs-seq/demo-spec-seq.js @@ -0,0 +1,56 @@ +import playwright from 'playwright'; +import config from 'config'; +import assert from 'assert'; + +const mochaTimeoutMS = config.get( 'mochaTimeoutMS' ); + +describe( 'Playwright 1', function() { + this.timeout( mochaTimeoutMS ); + + let browser; + + before( async function() { + browser = await playwright.chromium.launch(); + } ); + + it( 'can wait for an element to appear', async function() { + const context = await browser.newContext(); + const page = await context.newPage( `${ config.get( 'baseURL' )}` ); + await page.waitFor( '#elementappearschild', { visible: true, timeout: 5000 } ); + } ); + + it( 'can handle alerts', async function() { + const context = await browser.newContext(); + const page = await context.newPage(); + page.on('dialog', async dialog => { + await dialog.accept(); + }); + await page.goto( `${ config.get( 'baseURL' )}/leave` ); + await page.click( '#homelink' ); + await page.waitFor( '#elementappearsparent', { visible: true, timeout: 5000 } ); + } ); + + it( 'can check for errors when there should be none', async function() { + const context = await browser.newContext(); + const page = await context.newPage(); + let errors = ''; + page.on('pageerror', pageerr => { + errors = errors + pageerr; + }); + await page.goto( `${ config.get( 'baseURL' )}` ); + assert.equal( errors, '' ); + } ); + + it( 'can use xpath selectors to find elements', async function() { + const context = await browser.newContext(); + const page = await context.newPage(); + await page.goto( `${ config.get( 'baseURL' )}` ); + await page.waitFor( '//span[contains(., "Scissors")]' ); + await page.click( '//span[contains(., "Scissors")]' ); + await page.waitFor( '//div[contains(., "Scissors clicked!")]' ); + } ); + + after( async function() { + await browser.close(); + } ); +} );