cypress-queries-builder
v0.0.7
Published
This is library for simplifying writing queries with [Cypress](https://www.cypress.io/).
Downloads
14
Readme
Cypress Queries Builder
This is library for simplifying writing queries with Cypress.
Installation
To install with npm, run command:
npm i -D cypress-queries-builder@latest
Initialization
The library provides the set of interfaces and the build
function,
import { build } from 'cypress-queries-builder';
Then, builder instance need to be initialized inside cypress context function (cy
- Cypress instance):
describe('Main', () => {
const _ = build(cy, params);
Here, symbol _
is used as builder instance variable name (to have it as shorter as possible).
With second argument params
can be passed set of options:
| Option | Type | Default Value | Description |
| -------------- |---------------------|:-------------:|:-----------------------------------------:|
| mainSelector
| string
| body
| Selector of main container for each query |
| findInFrame
| boolean
| false
| Using storybook iframe instead of main container |
| iframeBody
| Cypress.Chainable
| - | Using custom iframe instead of storybook |
| pathPrefix
| string
| empty string | Default prefix for visiting pages |
| hideToolbar
| () => void
| - | - |
| toggleMenu
| () => void
| - | - |
| hideMenu
| () => void
| - | - |
| keydown
| () => void
| - | - |
The instance of cypress queries builder, allows to run next actions:
Usage
Builder instance provides next commands:
visit
Same as default Cypress visit, but with improves for storybook and
it uses predefined pathPrefix
, if it was used while initialization.
| Input parameters | Type | Is nullable | Default value |
|------------------|-------------------------|------------ |---------------|
| pathPostfix
| string
| Yes |empty string |
| options
| Cypress.VisitOptions
| Yes | - |
Example:
_.visit('test-route/2');
testCases
Helps to have more flexible test cases usage,
and provide two commands to do so - add
and run
:
The main flow is next:
- Provide the test cases wrapped with function as input for
add
command. - Specify the number or numbers array in the input for
run
command.
add
command returnsrun
command, so test cases can be "runnned" inline, immediately, using call function braces_.add(...testcases)([1, 2])
Example usage, both example is doing the same:
_.testCases.add([
() => it('1. Visit first route', () => _.visit('first-route'); ),
() => it('2. Visit second route', () => _.visit('second-route'); ),
]);
_.testCases.run([2]); // so Cypress will execute only second test case
or
_.testCases.add([
() => it('1. Visit first route',
() => {
_.visit('first-route')
}),
() => it('2. Visit second route',
() => {
_.visit('second-route')
}),
])([2]) // so Cypress will execute only second test case
find
Command returns Cypress.Chainable
object in order to do further test cases.
Input options extends: ExecuteOptions, FindOptions
Example usage:
// get second element with class "link", but wait 5 seconds before it
const finded = _.find({
classNames: 'link',
elementNumber: 2,
wait: { before: 5000 }
});
finded.click();
type
Input options extends: ExecuteOptions, DefaultOptions, ChildOptions
| Input parameters | Type | Is nullable | Description |
|-----------------------------|-------------------------------------|------------ |-------------|
| text
| string
| Yes | - |
| keyPress
| KeyPressOptions | Yes | - |
| parseSpecialCharSequences
| boolean
| Yes | - |
| delay
| number
| Yes | - |
| force
| boolean
| Yes | - |
Example usage
_.type({
text: 'test',
classNames: ['test-class1', 'test-class2']
});
clear
Input options extends: ExecuteOptions
Example usage:
_.clear({ classNames: 'test-class' });
click
Command proxy for cypress .click() chain.
Input options extends: ExecuteOptions, DefaultOptions, ChildOptions, TimerOptions
| Input parameters | Type | Is nullable | Description |
|----------------- |-----------|------------ |-------------|
| force
| boolean
| Yes | - |
Example usage:
_.click({
classNames: 'test-class',
force: true
});
exist
Input options extends: ExecuteOptions, DefaultOptions, TimerOptions
| Input parameters | Type | Is nullable | Description |
|----------------- |-----------|------------ |-------------|
| exist
| boolean
| Yes | - |
Example usage
_.exist({
exist,
classNames: selectedItemClass,
elementNumber
});
disabled
Input options extends: FindOptions
| Input parameters | Type | Is nullable | Description |
|----------------- |-----------|------------ |-------------|
| disabled
| boolean
| Yes | - |
Example usage
_.disabled({
disabled: true,
classNames: selectedItemClass,
elementNumber
});
contain
Input options extends: ExecuteOptions, PropertyOptions
| Input parameters | Type | Is nullable | Description |
|----------------- |-----------|------------ |-------------|
| expectedValue
| string
| No | - |
| contain
| boolean
| Yes | - |
Example usage
_.contain({
value: true,
expectedValue: text,
classNames: loginEmailInputClass
})
_.contain({
text: true,
expectedValue: text,
classNames: loginEmailInputClass
})
scrollable
Input options extends: ExecuteOptions, FindOptions
| Input parameters | Type | Is nullable | Description |
|---------------------|-----------|------------ |-------------|
| isScrollable
| boolean
| Yes | - |
Example usage
_.scrollable({
isScrollable,
classNames: classificationsScrollContainerClass
});
trigger
Input options extends: ExecuteOptions, FindOptions
| Input parameters | Type | Is nullable | Description |
|---------------------|-----------|------------ |-------------|
| triggerName
| string
| No | - |
Example usage
_.trigger({
triggerName: 'mouseover',
classNames: c.autocompleteInputClass
});
have
Input options extends: ExecuteOptions, FindOptions
Have has next suboptions:
have.class
| Input parameters | Type | Is nullable | Description |
|---------------------|-----------|------------ |-------------|
| have
| boolean
| No | - |
| className
| string
| No | - |
Example usage
_.have.class({
className,
have,
classNames: 'looking-for'
});
have.child
| Input parameters | Type | Is nullable | Description |
|----------------------|-----------|------------ |-------------|
| have
| boolean
| No | - |
| childClassNames
| string
| Yes | - |
| className
| string
| Yes | - |
| childElementNumber
| string
| Yes | - |
Example usage
_.have.child({
childClassNames: 'childe',
have: true,
selectors,
elementNumber
});
have.length
| Input parameters | Type | Is nullable | Description |
|---------------------|-----------|------------ |-------------|
| have
| boolean
| Yes | - |
| expectedLength
| number
| No | - |
Example usage
_.have.length({
expectedLength,
have: true,
classNames: removeIconPath
});
style
Input options extends: ExecuteOptions, FindOptions
Have has next suboptions:
style.get
| Input parameters | Type | Is nullable | Description |
|---------------------|-----------|------------ |-------------|
| styleName
| string
| No | - |
Example usage
_.style.get({
styleName: 'width',
classNames: inputClass
});
style.compare
Input options extends CompareOptions
| Input parameters | Type | Is nullable | Description |
|----------------------|-----------|------------ |-------------|
| expectedValue
| number
| No | - |
Example usage
_.style.compare({
expectedValue,
styleName: 'width',
classNames: inputClass,
equal
});
property
Input options extends: ExecuteOptions, FindOptions
Have has next suboptions:
property.get
Input options extends: PropertyOptions
Example usage
_.property.get({
text: true,
selectors: ['table', 'td.cell'],
elementNumber
});
property.is
| Input parameters | Type | Is nullable | Description |
|----------------------|-----------|------------ |-------------|
| is
| boolean
| Yes | - |
| expectedValue
| number
| No | - |
Example usage
_.property.is({
expectedValue,
classNames: 'data',
text: true,
is: true
});
Common Options:
ElementOptions
| Input parameters | Type | Is nullable | Description |
|----------------- |----------|------------ |-------------|
| selector
| string
| Yes | - |
| elementIndex
| number
| Yes | - |
ChildOptions
| Input parameters | Type | Is nullable | Description |
|---------------------|----------|------------ |-------------|
| childSelector
| string
| Yes | - |
| childElementIndex
| number
| Yes | - |
DefaultOptions
Extends: ElementOptions
| Input parameters | Type | Is nullable | Description |
|---------------------|-----------|------------ |-------------|
| findInBody
| boolean
| Yes | - |
ExecuteOptions
Extends: DefaultOptions
| Input parameters | Type | Is nullable | Description |
|---------------------|-----------------|------------ |-------------|
| classNames
| StringOrArray
| Yes | - |
| selectors
| StringOrArray
| Yes | - |
| elementNumber
| StringOrArray
| Yes | - |
TimerOptions
| Input parameters | Sub parameters | Type | Is nullable | Description |
|------------------|----------------|----------|------------ |-------------|
| wait
| | string
| Yes | - |
| | after | number
| Yes | - |
| | before | number
| Yes | - |
| timeout
| | number
| Yes | - |
FindOptions
Extends: DefaultOptions, ChildOptions, TimerOptions
| Input parameters | Type | Is nullable | Default value |
|--------------------|--------------------------|------------ |---------------|
| container
| Cypress.Chainable<any>
| Yes | - |
| skipElementIndex
| boolean
| Yes | - |
KeyPressOptions
| Input parameters | Type | Is nullable | Default value |
|--------------------|--------------------------|------------ |---------------|
| enter
| boolean
| Yes | - |
| downarrow
| boolean
| Yes | - |
| uparrow
| boolean
| Yes | - |
| esc
| boolean
| Yes | - |
| selectall
| boolean
| Yes | - |
| backspace
| boolean
| Yes | - |
PropertyOptions
Extends: FindOptions
| Input parameters | Type | Is nullable | Description |
|---------------------|-----------|------------ |-------------|
| text
| boolean
| Yes | - |
| value
| boolean
| Yes | - |
CompareOptions
| Input parameters | Type | Is nullable | Description |
|---------------------|-----------|------------ |-------------|
| equal
| boolean
| Yes | - |
| graterThan
| boolean
| Yes | - |
| contain
| boolean
| Yes | - |