UNPKG

quoad

Version:

Serenity/JS: Next generation acceptance testing library for modern web applications.

113 lines (98 loc) 4.81 kB
import 'mocha'; import { expect } from '@integration/testing-tools'; import { Ensure, isPresent, not } from '@serenity-js/assertions'; import { actorCalled, AssertionError, Duration, Wait } from '@serenity-js/core'; import { trimmed } from '@serenity-js/core/lib/io'; import { By, Click, isActive, Navigate, PageElement, PageElements } from '@serenity-js/web'; describe('isActive', function () { const Elements = { nonExistent: () => PageElement.located(By.id('does-not-exist')).describedAs('non-existent element'), nonExistentElements: () => PageElements.located(By.id('does-not-exist')).describedAs('non-existent elements'), activeInput: () => PageElement.located(By.id('active')).describedAs('the active input'), autofocusedInput: () => PageElement.located(By.id('autofocused')).describedAs('the autofocused input'), inactiveInput: () => PageElement.located(By.id('inactive')).describedAs('the inactive input'), }; beforeEach(() => actorCalled('Wendy').attemptsTo( Navigate.to('/expectations/is-active/active_inactive_inputs.html'), Wait.upTo(Duration.ofSeconds(10)) .until(Elements.autofocusedInput(), isPresent()), )); describe('resolves to true when the element', () => { /** @test {isActive} */ it('is active', () => expect(actorCalled('Wendy').attemptsTo( Wait.until(Elements.autofocusedInput(), isActive()), Ensure.that(Elements.autofocusedInput(), isActive()), Ensure.that(Elements.inactiveInput(), not(isActive())), Click.on(Elements.inactiveInput()), Wait.until(Elements.inactiveInput(), isActive()), Ensure.that(Elements.inactiveInput(), isActive()), )).to.be.fulfilled); }); describe('resolves to false when the element', () => { /** @test {isActive} */ it('is inactive', () => expect(actorCalled('Wendy').attemptsTo( Ensure.that(Elements.inactiveInput(), isActive()), )).to.be.rejectedWith(AssertionError, new RegExp(trimmed` | Expected the inactive input to become present and become active | | Expectation: isActive\\(\\) | | Expected boolean:\\s+true | Received [A-Za-z]+PageElement | | [A-Za-z]+PageElement { | locator: [A-Za-z]+Locator { | parent: [A-Za-z]+RootLocator { } | selector: ById { | value: 'inactive' | } | } | }`, 'gm'))); /** @test {isActive} */ it('does not exist', () => expect(actorCalled('Wendy').attemptsTo( Ensure.that(Elements.nonExistent(), isActive()), )).to.be.rejectedWith(AssertionError, new RegExp(trimmed` | Expected non-existent element to become present and become active | | Expectation: isPresent\\(\\) | | Expected boolean:\\s+true | Received Proxy<QuestionStatement> | | [A-Za-z]+PageElement { | locator: [A-Za-z]+Locator { | parent: [A-Za-z]+RootLocator { } | selector: ById { | value: 'does-not-exist' | } | } | }`, 'gm'))); /** @test {isActive} */ it('does not exist in a list of PageElements', () => expect(actorCalled('Wendy').attemptsTo( Ensure.that(Elements.nonExistentElements().first(), isActive()), )).to.be.rejectedWith(AssertionError, new RegExp(trimmed` | Expected the first of non-existent elements to become present and become active | | Expectation: isPresent\\(\\) | | Expected boolean:\\s+true | Received Proxy<QuestionStatement> | | Unanswered { }`, 'gm'))); }); /** @test {isActive} */ it('contributes to a human-readable description of an assertion', () => { expect(Ensure.that(Elements.activeInput(), isActive()).toString()) .to.equal(`#actor ensures that the active input does become active`); }); /** @test {isActive} */ it('contributes to a human-readable description of a wait', () => { expect(Wait.until(Elements.activeInput(), isActive()).toString()) .to.equal(`#actor waits until the active input does become active`); }); });