UNPKG

appwright

Version:

E2E mobile app testing done right, with the Playwright test runner

90 lines (89 loc) 4.22 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const vitest_1 = require("vitest"); const locator_1 = require("../locator"); const errors_1 = require("../types/errors"); (0, vitest_1.test)("isVisible on unknown element", async () => { const mockFindElements = vitest_1.vi.fn().mockResolvedValue([]); //@ts-ignore const wdClientMock = { findElements: mockFindElements, }; const locator = new locator_1.Locator(wdClientMock, { expectTimeout: 1_000 }, "//unknown-selector", "xpath"); const isVisible = await locator.isVisible(); (0, vitest_1.expect)(isVisible).toBe(false); (0, vitest_1.expect)(mockFindElements).toHaveBeenCalledTimes(2); }); (0, vitest_1.test)("isVisible on element that is found but fails displayed check", async () => { const mockFindElements = vitest_1.vi.fn().mockResolvedValue([ { "element-6066-11e4-a52e-4f735466cecf": "element-id", }, ]); const mockIsElementDisplayed = vitest_1.vi.fn().mockResolvedValue(false); //@ts-ignore const wdClientMock = { findElements: mockFindElements, isElementDisplayed: mockIsElementDisplayed, }; const locator = new locator_1.Locator(wdClientMock, { expectTimeout: 1_000 }, "//known-but-hidden-element", "xpath"); const isVisible = await locator.isVisible(); (0, vitest_1.expect)(isVisible).toBe(false); (0, vitest_1.expect)(mockFindElements).toHaveBeenCalledTimes(2); (0, vitest_1.expect)(mockIsElementDisplayed).toHaveBeenCalledTimes(2); (0, vitest_1.expect)(mockIsElementDisplayed).toHaveBeenCalledWith("element-id"); }); (0, vitest_1.test)("isVisible on element that throws stale element reference", async () => { const mockFindElements = vitest_1.vi.fn().mockResolvedValue([ { "element-6066-11e4-a52e-4f735466cecf": "element-id", }, ]); const mockIsElementDisplayed = vitest_1.vi.fn().mockImplementation(() => { class WebDriverInteralError extends Error { constructor(name, ...args) { super(...args); this.name = name; } } throw new WebDriverInteralError(`random stale element reference random`); }); //@ts-ignore const wdClientMock = { findElements: mockFindElements, isElementDisplayed: mockIsElementDisplayed, }; const locator = new locator_1.Locator(wdClientMock, { expectTimeout: 1_000 }, "//known-element-that-keeps-throwing-stale-element-reference", "xpath"); const isVisible = await locator.isVisible(); (0, vitest_1.expect)(isVisible).toBe(false); (0, vitest_1.expect)(mockFindElements).toHaveBeenCalledTimes(2); (0, vitest_1.expect)(mockIsElementDisplayed).toHaveBeenCalledTimes(2); (0, vitest_1.expect)(mockIsElementDisplayed).toHaveBeenCalledWith("element-id"); }); (0, vitest_1.test)("waitFor attached state works for hidden element", async () => { const mockFindElements = vitest_1.vi.fn().mockResolvedValue([ { "element-6066-11e4-a52e-4f735466cecf": "element-id", }, ]); const mockIsElementDisplayed = vitest_1.vi.fn().mockResolvedValue(false); //@ts-ignore const wdClientMock = { findElements: mockFindElements, isElementDisplayed: mockIsElementDisplayed, }; const locator = new locator_1.Locator(wdClientMock, { expectTimeout: 1_000 }, "//attached-hidden-element", "xpath"); (0, vitest_1.expect)(await locator.waitFor("attached")).toBe(true); (0, vitest_1.expect)(mockFindElements).toHaveBeenCalledTimes(1); (0, vitest_1.expect)(mockIsElementDisplayed).toHaveBeenCalledTimes(0); }); (0, vitest_1.test)("waitFor attached state throws TimeoutError", async () => { const mockFindElements = vitest_1.vi.fn().mockResolvedValue([]); //@ts-ignore const wdClientMock = { findElements: mockFindElements, }; const locator = new locator_1.Locator(wdClientMock, { expectTimeout: 1_000 }, "//attached-hidden-element", "xpath"); await (0, vitest_1.expect)(locator.waitFor("attached")).rejects.toThrowError(errors_1.TimeoutError); (0, vitest_1.expect)(mockFindElements).toHaveBeenCalledTimes(2); });