mirror of
https://github.com/pavlobu/deskreen.git
synced 2025-05-21 01:40:12 -07:00
83 lines
2.6 KiB
TypeScript
83 lines
2.6 KiB
TypeScript
/* eslint jest/expect-expect: off, jest/no-test-callback: off */
|
|
import { ClientFunction, Selector } from 'testcafe';
|
|
|
|
const getPageUrl = ClientFunction(() => window.location.href);
|
|
const getPageTitle = ClientFunction(() => document.title);
|
|
const counterSelector = Selector('[data-tid="counter"]');
|
|
const buttonsSelector = Selector('[data-tclass="btn"]');
|
|
const clickToCounterLink = (t) =>
|
|
t.click(Selector('button').withExactText('to Counter'));
|
|
const incrementButton = buttonsSelector.nth(0);
|
|
const decrementButton = buttonsSelector.nth(1);
|
|
const oddButton = buttonsSelector.nth(2);
|
|
const asyncButton = buttonsSelector.nth(3);
|
|
const getCounterText = () => counterSelector().innerText;
|
|
const assertNoConsoleErrors = async (t) => {
|
|
const { error } = await t.getBrowserConsoleMessages();
|
|
await t.expect(error).eql([]);
|
|
};
|
|
|
|
fixture`Home Page`.page('../../app/app.html').afterEach(assertNoConsoleErrors);
|
|
|
|
test('e2e', async (t) => {
|
|
await t.expect(getPageTitle()).eql('Hello Deskreen!');
|
|
});
|
|
|
|
test('should open window and contain expected page title', async (t) => {
|
|
await t.expect(getPageTitle()).eql('Hello Deskreen!');
|
|
});
|
|
|
|
test(
|
|
'should not have any logs in console of main window',
|
|
assertNoConsoleErrors
|
|
);
|
|
|
|
test('should navigate to Counter with click on the "to Counter" link', async (t) => {
|
|
await t.click('#to-counter').expect(getCounterText()).eql('0');
|
|
});
|
|
|
|
test('should navigate to /counter', async (t) => {
|
|
await t.click('#to-counter').expect(getPageUrl()).contains('/counter');
|
|
});
|
|
|
|
fixture`Counter Tests`
|
|
.page('../../app/app.html')
|
|
.beforeEach(clickToCounterLink)
|
|
.afterEach(assertNoConsoleErrors);
|
|
|
|
test('should display updated count after the increment button click', async (t) => {
|
|
await t.click(incrementButton).expect(getCounterText()).eql('1');
|
|
});
|
|
|
|
test('should display updated count after the descrement button click', async (t) => {
|
|
await t.click(decrementButton).expect(getCounterText()).eql('-1');
|
|
});
|
|
|
|
test('should not change even counter if odd button clicked', async (t) => {
|
|
await t.click(oddButton).expect(getCounterText()).eql('0');
|
|
});
|
|
|
|
test('should change odd counter if odd button clicked', async (t) => {
|
|
await t
|
|
.click(incrementButton)
|
|
.click(oddButton)
|
|
.expect(getCounterText())
|
|
.eql('2');
|
|
});
|
|
|
|
test('should change if async button clicked and a second later', async (t) => {
|
|
await t
|
|
.click(asyncButton)
|
|
.expect(getCounterText())
|
|
.eql('0')
|
|
.expect(getCounterText())
|
|
.eql('1');
|
|
});
|
|
|
|
test('should back to home if back button clicked', async (t) => {
|
|
await t
|
|
.click('[data-tid="backButton"] > a')
|
|
.expect(Selector('[data-tid="container"]').visible)
|
|
.ok();
|
|
});
|