@guinie/selenium
TypeScript icon, indicating that this package has built-in type declarations

3.0.0 • Public • Published

@guinie/selenium

A library of utilities for running defined sequences of interaction on a live web page using Selenium.

Table of Contents

Install

npm install -D @guinie/selenium

@guinie/selenium is depends on selenium-webdriver, which requires additional executables to be available. See https://www.npmjs.com/package/selenium-webdriver for instructions.

Usage

To run sequences in Selenium context, a browserDriver is required. A Chrome browserDriver can be created using getChromeDriver. This driver can be used for basic setup of the tests:

const { configure } = require('@guinie/selenium')
const { context, getChromeDriver } = configure()

const chromeDriver = getChromeDriver()
await chromeDriver.get('http://localhost:3000')

Be sure to close the browser driver session when the tests are done using closeDriver:

const { configure } = require('@guinie/selenium')
const { closeDriver } = configure()

await closeDriver(chromeDriver)

A browser driver can be wrapped into a driverState, which is needed for guinie sequences:

const { configure } = require('@guinie/selenium')
const { wrapDriver } = configure()

const seleniumDriverState = wrapDriver(chromeDriver)

Selenium context is passed to raw sequences:

const { applyContext } = require('@guinie/common')
const { configure } = require('@guinie/selenium')
const frontpageActions = require('./front-page.unit.test.js')

const { context } = configure()

// This...
const login = frontpageActions.login(context)
const createTodo = frontpageActions.createTodo(context)
const loginAndCreateTodo = frontpageActions.loginAndCreateTodo(context)

// ...is equivalent to this
const [
  login2,
  createTodo2,
  loginAndCreateTodo2
] = applyContext(
  frontpageActions.login,
  frontpageActions.createTodo,
  frontpageActions.loginAndCreateTodo
)(context)

Now that we have sequences with driver context applied, we can pass in parameters for the test:

// Pass final details in for the test function
const loginAsCarlAndCreateShoppingTodo = loginAndCreateTodo({
  username: 'Carl',
  password: 'secret',
  title: 'Do shopping'
})

Finally, execute the sequence by passing in the seleniumDriverState:

// Execute sequence
const finalDriverState = await loginAsCarlAndCreateShoppingTodo(seleniumDriverState)

API

configure

config => ({ wrapDriver, context, getChromeDriver, closeDriver })

Returns an object containing a Selenium context and other utility functions.

getChromeDriver

() => chromeBrowserDriver

Returns a browserDriver for chrome browser.

closeDriver

browserDriver => browserDriver

Closes the session for the given browserDriver.

wrapDriver

browserDriver => seleniumDriverState

Returns a driverState for the specified browser test driver.

context

Object - the entire module exported by @guinie/selenium

Contains necessary functions to run guinie sequences in selenium testing context.

Maintainer

Contributing

For questions, bug reports etc., please open an issue.

Pull requests welcome.

License

ISC 2021

Package Sidebar

Install

npm i @guinie/selenium

Weekly Downloads

7

Version

3.0.0

License

ISC

Unpacked Size

12.3 kB

Total Files

10

Last publish

Collaborators

  • jluukka