Skip to content

Latest commit

 

History

History
162 lines (119 loc) · 5.12 KB

README.md

File metadata and controls

162 lines (119 loc) · 5.12 KB

React Page Object

This library gives you the ability to write the following integration tests:

import React, { Component } from 'react'
import Page from 'react-page-object'

class Counter extends Component {
  state = { count: 0 }

  addOne = () => this.setState({ count: this.state.count + 1 })
  addOneAsync = () => setTimeout(this.addOne, 100)

  render() {
    return (
      <div>
        <h1>{this.state.count}</h1>
        <button onClick={this.addOne}>Add one</button>
        <button onClick={this.addOneAsync}>Add one async</button>
      </div>
    )
  }
}

describe('Counter component', () => {
  let page

  beforeEach(() => {
    page = new Page(<Counter />)
  })

  afterEach(() => {
    page.destroy()
  })

  it('sets the initial count to 0', () => {
    expect(page.content()).toMatch(/0/)
  })

  it('adds one to the count when the \'Add one\' button is clicked', () => {
    page.clickButton('Add one')
    expect(page.content()).toMatch(/1/)
  })

  it('adds one to the count after a delay when the \'Add one async\' button is clicked', async () => {
    page.clickButton('Add one async')
    expect(page.content()).not.toMatch(/1/)
    await page.waitUntil(() => page.contentMatches(/1/))
    expect(page.content()).toMatch(/1/)
  })
})

This was test written in Jest. However, This library can be used with any test runner or assertion library that is compatible with Enzyme.

Installation

$ npm install --save-dev react-page-object

enzyme is a peer dependency of react-page-object, so you will need to install it if you have not done so already. Additionally, react-dom and react-addons-test-utils are peer dependencies of enzyme, so install those as well if you are missing them.

$ npm install --save-dev enzyme
$ npm install --save-dev react-dom
$ npm install --save-dev react-test-renderer

If you are new to testing in React, check out the following guides to get you up and running:

API

Set Up Methods

Create a Page object

Destroy a Page object

Find Wrapper Methods

Find a checkbox

Find a radio button

Find a button

Find a clickable input

Find a link

Find a text input

Find a textarea

Find a select box

Interaction Methods

Blur the currently focused element.

Check a checkbox

Choose a radio button

Click a button

Click a clickable input

Click a link

Fill in a text input

Fill in a textarea

Select an option from a select box

Uncheck a checkbox

Utility Methods

Returns the page text

Returns whether or not the page text matches the given matcher

Returns the current URL path

Output to the console a code snippet to view the page HTML

Wait until a certain condition is met. Useful for testing asynchronicity

FAQs