Introducing Socket Firewall: Free, Proactive Protection for Your Software Supply Chain.Learn More
Socket
Book a DemoInstallSign in
Socket

@cucumber-e2e/po2

Package Overview
Dependencies
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@cucumber-e2e/po2

library for plain-english access page object access

npmnpm
Version
1.0.0
Version published
Maintainers
1
Created
Source

@cucumber-e2e/po2

This library provides the ability to create hierarchical page objects and access elements using plain-english selectors. Works on top of webdriverIO.

npm install @cucumber-e2e/po2

Usage

Lib provides getElement method that resolves plain-english selector and return webdriverIO element or array of webdriverIO element.

const { po } = require('@cucumber-e2e/po2');

When(/^click '(.+)'$/, async function (alias) {
    const element = await po.getElement(alias);
    await element.waitForClickable();
    await element.click();
});
When click '#1 of Multiple Component > Child Item'

Lib provides capability to get single element from collection by index (#index of Collection) or inner text (#text in Collection).

Create page object

Lib provides two methods $ and $$ that allow registering elements and collections. An element can be defined in form of webdriverIO selector or as an instance of the component class.

Each not top-level component should have selector element in form of webdriverIO selector.

const { $, $$ } = require('@cucumber-e2e/po2');

class MultipleComponent {
    selector = '.list-components li';
    ChildItem = $('div');
}

class SingleComponent {
    selector = '.container';
    ChildItem = $('.child-item');
}

class App {
    SingleElement = $('.single-element');
    List = $$('.list li');
    SingleComponent = $(new SingleComponent());
    MultipleComponents = $$(new MultipleComponent());
}

module.exports = new App();

Register PO

Before using po object need to be initiated and hierarchy of elements needs to be registered The best place to do it is cucumber-js Before hook

const { po } = require('@cucumber-e2e/po2');
const pos = require('./app.js');
Before(async function() {
    po.init(browser, { timeout: 10000 });  // browser is webdriverIO browser object
    po.register(pos); // pos is page object hierarchy
});

FAQs

Package last updated on 17 Dec 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts