playwright-fluent
Version:
Fluent API around playwright
187 lines (186 loc) • 7.41 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const path = tslib_1.__importStar(require("path"));
const SUT = tslib_1.__importStar(require("../../playwright-fluent"));
const utils_1 = require("../../../utils");
describe('Playwright Fluent - expectThat isVisible in viewport', () => {
let p;
beforeEach(() => {
p = new SUT.PlaywrightFluent();
});
afterEach(async () => {
await p.close();
});
test('should give back an error when selector does not exists', async () => {
// Given
const url = `file:${path.join(__dirname, 'expect-is-visible-in-viewport.test.html')}`;
const selector = 'foobar';
// When
let result = undefined;
try {
await p
.withBrowser('chromium')
.withOptions({ headless: false })
.withCursor()
.navigateTo(url)
.expectThatSelector(selector)
.isVisibleInViewport({ timeoutInMilliseconds: 2000 });
}
catch (error) {
result = error;
}
// Then
expect(result && result.message).toContain("Selector 'foobar' was not found in DOM.");
});
test('should give back an error when selector object does not exists', async () => {
// Given
const url = `file:${path.join(__dirname, 'expect-is-visible-in-viewport.test.html')}`;
const selector = p.selector('foobar');
// When
let result = undefined;
try {
await p
.withBrowser('chromium')
.withOptions({ headless: false })
.withCursor()
.navigateTo(url)
.expectThatSelector(selector)
.isVisibleInViewport({ timeoutInMilliseconds: 2000 });
}
catch (error) {
result = error;
}
// Then
expect(result && result.message).toContain("Selector 'selector(foobar)' was not found in DOM.");
});
test('should wait until selector exists and is visible in the viweport - chromium', async () => {
// Given
const url = `file:${path.join(__dirname, 'expect-is-visible-in-viewport.test.html')}`;
const selector = '#dynamically-added-paragraph';
// When
await p
.withBrowser('chromium')
.withOptions({ headless: false })
.withCursor()
.navigateTo(url)
.expectThatSelector(selector)
.isVisibleInViewport();
// Then
const isVisible = await p.isVisibleInViewport(selector, utils_1.noWaitNoThrowOptions);
expect(isVisible).toBe(true);
});
test('should wait until selector object exists and is visible - chromium', async () => {
// Given
const url = `file:${path.join(__dirname, 'expect-is-visible-in-viewport.test.html')}`;
const selector = p.selector('p').withText('dynamically added');
// When
await p
.withBrowser('chromium')
.withOptions({ headless: false })
.withCursor()
.navigateTo(url)
.expectThatSelector(selector)
.isVisibleInViewport();
// Then
const isVisible = await p.isVisibleInViewport(selector, utils_1.noWaitNoThrowOptions);
expect(isVisible).toBe(true);
});
test('should give back an error when selector is hidden - chromium', async () => {
// Given
const url = `file:${path.join(__dirname, 'expect-is-visible-in-viewport.test.html')}`;
const selector = '#hidden';
// When
let result = undefined;
try {
await p
.withBrowser('chromium')
.withOptions({ headless: false })
.withCursor()
.navigateTo(url)
.expectThatSelector(selector)
.isVisibleInViewport({ timeoutInMilliseconds: 2000 });
}
catch (error) {
result = error;
}
// Then
const isVisible = await p.isVisibleInViewport(selector, utils_1.noWaitNoThrowOptions);
expect(isVisible).toBe(false);
expect(result && result.message).toContain("Selector '#hidden' is not visible.");
});
test('should give back an error when selector object is hidden - chromium', async () => {
// Given
const url = `file:${path.join(__dirname, 'expect-is-visible-in-viewport.test.html')}`;
const selector = p.selector('p').withText('I am hidden');
// When
let result = undefined;
try {
await p
.withBrowser('chromium')
.withOptions({ headless: false })
.withCursor()
.navigateTo(url)
.expectThatSelector(selector)
.isVisibleInViewport({ timeoutInMilliseconds: 2000 });
}
catch (error) {
result = error;
}
// Then
const isVisible = await p.isVisibleInViewport(selector, utils_1.noWaitNoThrowOptions);
expect(isVisible).toBe(false);
const expectedMessage = `selector(p)
.withText(I am hidden)' is not visible.`;
expect(result && result.message).toContain(expectedMessage);
});
test('should give back an error when selector is out of the viewport - chromium', async () => {
// Given
const url = `file:${path.join(__dirname, 'expect-is-visible-in-viewport.test.html')}`;
const selector = '#out-of-viewport';
// When
let result = undefined;
try {
await p
.withBrowser('chromium')
.withOptions({ headless: false })
.withCursor()
.navigateTo(url)
.expectThatSelector(selector)
.isVisibleInViewport({ timeoutInMilliseconds: 2000 });
}
catch (error) {
result = error;
}
// Then
const isVisible = await p.isVisibleInViewport(selector, utils_1.noWaitNoThrowOptions);
expect(isVisible).toBe(false);
expect(result && result.message).toContain("Selector '#out-of-viewport' is not visible.");
});
test('should give back an error when selector object is out of the viewport - chromium', async () => {
// Given
const url = `file:${path.join(__dirname, 'expect-is-visible-in-viewport.test.html')}`;
const selector = p.selector('p').withText('I am out of viewport');
// When
let result = undefined;
try {
await p
.withBrowser('chromium')
.withOptions({ headless: false })
.withCursor()
.navigateTo(url)
.expectThatSelector(selector)
.isVisibleInViewport({ timeoutInMilliseconds: 2000 });
}
catch (error) {
result = error;
}
// Then
const isVisible = await p.isVisibleInViewport(selector, utils_1.noWaitNoThrowOptions);
expect(isVisible).toBe(false);
const expectedMessage = `selector(p)
.withText(I am out of viewport)' is not visible.
Either this selector is hidden or is outside of the current viewport.`;
expect(result && result.message).toContain(expectedMessage);
});
});
;