diff options
| -rw-r--r-- | desktop/packages/mullvad-vpn/test/e2e/mocked/launch/ipc.ts | 17 | ||||
| -rw-r--r-- | desktop/packages/mullvad-vpn/test/e2e/mocked/launch/launch.spec.ts | 62 |
2 files changed, 79 insertions, 0 deletions
diff --git a/desktop/packages/mullvad-vpn/test/e2e/mocked/launch/ipc.ts b/desktop/packages/mullvad-vpn/test/e2e/mocked/launch/ipc.ts new file mode 100644 index 0000000000..6e790c444f --- /dev/null +++ b/desktop/packages/mullvad-vpn/test/e2e/mocked/launch/ipc.ts @@ -0,0 +1,17 @@ +import { MockedTestUtils } from '../mocked-utils'; + +export const createIpc = (util: MockedTestUtils) => { + const createMockResponse = <T>(channel: string, response: T) => + util.sendMockIpcResponse<T>({ + channel, + response, + }); + + return { + handle: {}, + send: { + daemonDisconnected: () => createMockResponse('daemon-disconnected', {}), + daemonAllowed: (allowed: boolean) => createMockResponse('daemon-daemonAllowed', allowed), + }, + }; +}; diff --git a/desktop/packages/mullvad-vpn/test/e2e/mocked/launch/launch.spec.ts b/desktop/packages/mullvad-vpn/test/e2e/mocked/launch/launch.spec.ts new file mode 100644 index 0000000000..30e793d6b8 --- /dev/null +++ b/desktop/packages/mullvad-vpn/test/e2e/mocked/launch/launch.spec.ts @@ -0,0 +1,62 @@ +import { expect, test } from '@playwright/test'; +import { Page } from 'playwright'; + +import { RoutePath } from '../../../../src/shared/routes'; +import { RoutesObjectModel } from '../../route-object-models'; +import { MockedTestUtils, startMockedApp } from '../mocked-utils'; +import { createIpc } from './ipc'; + +let page: Page; +let util: MockedTestUtils; +let routes: RoutesObjectModel; +let ipc: ReturnType<typeof createIpc>; + +test.describe('Launch', () => { + test.beforeAll(async () => { + ({ page, util } = await startMockedApp()); + ipc = createIpc(util); + routes = new RoutesObjectModel(page, util); + await util.waitForRoute(RoutePath.main); + + await ipc.send.daemonDisconnected(); + await routes.launch.waitForRoute(); + }); + + test.afterAll(async () => { + await page.close(); + }); + + test.describe('Linux', () => { + test.skip(() => process.platform !== 'linux'); + test('Should display default footer', async () => { + const learnMoreButton = routes.launch.selectors.learnMoreButton(); + await expect(learnMoreButton).toBeVisible(); + const defaultFooterText = routes.launch.selectors.defaultFooterText(); + await expect(defaultFooterText).toBeVisible(); + }); + }); + + test.describe('Windows', () => { + test.skip(() => process.platform !== 'win32'); + test('Should display restart daemon footer', async () => { + const learnMoreButton = routes.launch.selectors.detailsButton(); + await expect(learnMoreButton).toBeVisible(); + const tryAgainButton = routes.launch.selectors.tryAgainButton(); + await expect(tryAgainButton).toBeVisible(); + }); + }); + test.describe('MacOS', () => { + test.skip(() => process.platform !== 'darwin'); + test('Should display default footer', async () => { + const learnMoreButton = routes.launch.selectors.learnMoreButton(); + await expect(learnMoreButton).toBeVisible(); + const defaultFooterText = routes.launch.selectors.defaultFooterText(); + await expect(defaultFooterText).toBeVisible(); + }); + test('Should display permission footer when daemon is not allowed', async () => { + await ipc.send.daemonAllowed(false); + const gotoSystemSettingsButton = routes.launch.selectors.gotoSystemSettingsButton(); + await expect(gotoSystemSettingsButton).toBeVisible(); + }); + }); +}); |
