|
1 | 1 | import { _electron as electron } from "playwright";
|
2 | 2 | import { test, expect } from "@playwright/test";
|
| 3 | +import { |
| 4 | + clickMenuItemById, |
| 5 | + findLatestBuild, |
| 6 | + ipcMainCallFirstListener, |
| 7 | + ipcRendererCallFirstListener, |
| 8 | + parseElectronApp, |
| 9 | + ipcMainInvokeHandler, |
| 10 | + ipcRendererInvoke |
| 11 | +} from 'electron-playwright-helpers' |
3 | 12 |
|
4 | 13 | test("Launch electron app", async () => {
|
5 | 14 | // Launch electron app
|
@@ -51,12 +60,36 @@ test.describe("Check Main Page", async () => {
|
51 | 60 | expect(title).toBe("SvelteStorm");
|
52 | 61 | });
|
53 | 62 |
|
54 |
| - test("Check version number: APP", async () => { |
55 |
| - const versionNumberApp = await firstWindow.innerText("data-testid=version-number-app"); |
56 |
| - expect(versionNumberApp).not.toBe("-"); |
57 |
| - const isValidNumberApp = semver.valid(semver.coerce(versionNumberApp)); |
58 |
| - expect(semver.valid(isValidNumberApp)).not.toBeNull(); |
59 |
| - }); |
| 63 | + test('Trigger IPC listener via main process', async () => { |
| 64 | + electronApp.evaluate(({ ipcMain }) => { |
| 65 | + ipcMain.emit('new-window') |
| 66 | + }) |
| 67 | + const newPage = await electronApp.waitForEvent('window') |
| 68 | + expect(newPage).toBeTruthy() |
| 69 | + firstWindow = newPage |
| 70 | + }) |
| 71 | + |
| 72 | + test('Send IPC message from Renderer to Main and open new window', async () => { |
| 73 | + // evaluate this script in render process |
| 74 | + // requires webPreferences.nodeIntegration true and contextIsolation false |
| 75 | + await firstWindow.evaluate(() => { |
| 76 | + require('electron').ipcRenderer.send('openDebugAppWindow', '8080') |
| 77 | + }) |
| 78 | + |
| 79 | + const newPage = await electronApp.waitForEvent('window') |
| 80 | + expect(newPage).toBeTruthy() |
| 81 | + firstWindow = newPage |
| 82 | + }) |
| 83 | + |
| 84 | + test('receive synchronous data via ipcMainCallFirstListener()', async () => { |
| 85 | + const data = await ipcMainCallFirstListener(electronApp, 'main-synchronous-data') |
| 86 | + expect(data).toBe('Main Synchronous Data') |
| 87 | + }) |
| 88 | + |
| 89 | + test('receive asynchronous data via ipcMainCallFirstListener()', async () => { |
| 90 | + const data = await ipcMainCallFirstListener(electronApp, 'main-asynchronous-data') |
| 91 | + expect(data).toBe('Main Asynchronous Data') |
| 92 | + }) |
60 | 93 |
|
61 | 94 | test.afterAll(async () => {
|
62 | 95 | await electronApp.close();
|
|
0 commit comments