From cfadd130e9685b2f0402699479c3d39270485042 Mon Sep 17 00:00:00 2001 From: hiento09 <136591877+hiento09@users.noreply.github.com> Date: Wed, 31 Jan 2024 11:26:30 +0700 Subject: [PATCH] Increase timeout for explore.e2e.spec test (#1844) * Increase timeout for explore.e2e.spec test * fix: test cases and timeout --------- Co-authored-by: Hien To Co-authored-by: Louis --- electron/playwright.config.ts | 10 ++-- .../{explore.e2e.spec.ts => hub.e2e.spec.ts} | 18 ++++-- electron/tests/main.e2e.spec.ts | 55 ------------------- electron/tests/navigation.e2e.spec.ts | 29 +++++----- electron/tests/settings.e2e.spec.ts | 10 +++- electron/tests/system-monitor.e2e.spec.ts | 41 -------------- web/screens/ExploreModels/index.tsx | 7 ++- web/screens/Settings/index.tsx | 5 +- web/screens/SystemMonitor/index.tsx | 2 +- 9 files changed, 51 insertions(+), 126 deletions(-) rename electron/tests/{explore.e2e.spec.ts => hub.e2e.spec.ts} (68%) delete mode 100644 electron/tests/main.e2e.spec.ts delete mode 100644 electron/tests/system-monitor.e2e.spec.ts diff --git a/electron/playwright.config.ts b/electron/playwright.config.ts index 98b2c7b45..1fa3313f2 100644 --- a/electron/playwright.config.ts +++ b/electron/playwright.config.ts @@ -1,9 +1,9 @@ -import { PlaywrightTestConfig } from "@playwright/test"; +import { PlaywrightTestConfig } from '@playwright/test' const config: PlaywrightTestConfig = { - testDir: "./tests", + testDir: './tests', retries: 0, - timeout: 120000, -}; + globalTimeout: 300000, +} -export default config; +export default config diff --git a/electron/tests/explore.e2e.spec.ts b/electron/tests/hub.e2e.spec.ts similarity index 68% rename from electron/tests/explore.e2e.spec.ts rename to electron/tests/hub.e2e.spec.ts index 77eb3dbda..6bfe45ac4 100644 --- a/electron/tests/explore.e2e.spec.ts +++ b/electron/tests/hub.e2e.spec.ts @@ -9,6 +9,7 @@ import { let electronApp: ElectronApplication let page: Page +const TIMEOUT: number = parseInt(process.env.TEST_TIMEOUT || '300000') test.beforeAll(async () => { process.env.CI = 'e2e' @@ -26,7 +27,9 @@ test.beforeAll(async () => { }) await stubDialog(electronApp, 'showMessageBox', { response: 1 }) - page = await electronApp.firstWindow() + page = await electronApp.firstWindow({ + timeout: TIMEOUT, + }) }) test.afterAll(async () => { @@ -34,8 +37,13 @@ test.afterAll(async () => { await page.close() }) -test('explores models', async () => { - await page.getByTestId('Hub').first().click() - await page.getByTestId('testid-explore-models').isVisible() - // More test cases here... +test('explores hub', async () => { + // Set the timeout for this test to 60 seconds + test.setTimeout(TIMEOUT) + await page.getByTestId('Hub').first().click({ + timeout: TIMEOUT, + }) + await page.getByTestId('hub-container-test-id').isVisible({ + timeout: TIMEOUT, + }) }) diff --git a/electron/tests/main.e2e.spec.ts b/electron/tests/main.e2e.spec.ts deleted file mode 100644 index 1a5bfe696..000000000 --- a/electron/tests/main.e2e.spec.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { _electron as electron } from 'playwright' -import { ElectronApplication, Page, expect, test } from '@playwright/test' - -import { - findLatestBuild, - parseElectronApp, - stubDialog, -} from 'electron-playwright-helpers' - -let electronApp: ElectronApplication -let page: Page - -test.beforeAll(async () => { - process.env.CI = 'e2e' - - const latestBuild = findLatestBuild('dist') - expect(latestBuild).toBeTruthy() - - // parse the packaged Electron app and find paths and other info - const appInfo = parseElectronApp(latestBuild) - expect(appInfo).toBeTruthy() - expect(appInfo.asar).toBe(true) - expect(appInfo.executable).toBeTruthy() - expect(appInfo.main).toBeTruthy() - expect(appInfo.name).toBe('jan') - expect(appInfo.packageJson).toBeTruthy() - expect(appInfo.packageJson.name).toBe('jan') - expect(appInfo.platform).toBeTruthy() - expect(appInfo.platform).toBe(process.platform) - expect(appInfo.resourcesDir).toBeTruthy() - - electronApp = await electron.launch({ - args: [appInfo.main], // main file from package.json - executablePath: appInfo.executable, // path to the Electron executable - }) - await stubDialog(electronApp, 'showMessageBox', { response: 1 }) - - page = await electronApp.firstWindow() -}) - -test.afterAll(async () => { - await electronApp.close() - await page.close() -}) - -test('renders the home page', async () => { - expect(page).toBeDefined() - - // Welcome text is available - const welcomeText = await page - .getByTestId('testid-welcome-title') - .first() - .isVisible() - expect(welcomeText).toBe(false) -}) diff --git a/electron/tests/navigation.e2e.spec.ts b/electron/tests/navigation.e2e.spec.ts index 2f4f7b767..2066fa60a 100644 --- a/electron/tests/navigation.e2e.spec.ts +++ b/electron/tests/navigation.e2e.spec.ts @@ -9,6 +9,7 @@ import { let electronApp: ElectronApplication let page: Page +const TIMEOUT: number = parseInt(process.env.TEST_TIMEOUT || '300000') test.beforeAll(async () => { process.env.CI = 'e2e' @@ -26,7 +27,9 @@ test.beforeAll(async () => { }) await stubDialog(electronApp, 'showMessageBox', { response: 1 }) - page = await electronApp.firstWindow() + page = await electronApp.firstWindow({ + timeout: TIMEOUT, + }) }) test.afterAll(async () => { @@ -35,20 +38,20 @@ test.afterAll(async () => { }) test('renders left navigation panel', async () => { - // Chat section should be there - const chatSection = await page.getByTestId('Chat').first().isVisible() - expect(chatSection).toBe(false) - - // Home actions - /* Disable unstable feature tests - ** const botBtn = await page.getByTestId("Bot").first().isEnabled(); - ** Enable back when it is whitelisted - */ - const systemMonitorBtn = await page .getByTestId('System Monitor') .first() - .isEnabled() - const settingsBtn = await page.getByTestId('Settings').first().isEnabled() + .isEnabled({ + timeout: TIMEOUT, + }) + const settingsBtn = await page + .getByTestId('Thread') + .first() + .isEnabled({ timeout: TIMEOUT }) expect([systemMonitorBtn, settingsBtn].filter((e) => !e).length).toBe(0) + // Chat section should be there + const apiServer = await page.getByTestId('Local API Server').first() + expect(apiServer).toBeVisible({ + timeout: TIMEOUT, + }) }) diff --git a/electron/tests/settings.e2e.spec.ts b/electron/tests/settings.e2e.spec.ts index 798504c70..765c3cba7 100644 --- a/electron/tests/settings.e2e.spec.ts +++ b/electron/tests/settings.e2e.spec.ts @@ -9,6 +9,7 @@ import { let electronApp: ElectronApplication let page: Page +const TIMEOUT: number = parseInt(process.env.TEST_TIMEOUT || '300000') test.beforeAll(async () => { process.env.CI = 'e2e' @@ -26,7 +27,9 @@ test.beforeAll(async () => { }) await stubDialog(electronApp, 'showMessageBox', { response: 1 }) - page = await electronApp.firstWindow() + page = await electronApp.firstWindow({ + timeout: TIMEOUT, + }) }) test.afterAll(async () => { @@ -35,6 +38,7 @@ test.afterAll(async () => { }) test('shows settings', async () => { - await page.getByTestId('Settings').first().click() - await page.getByTestId('testid-setting-description').isVisible() + await page.getByTestId('Settings').first().click({ timeout: TIMEOUT }) + const settingDescription = page.getByTestId('testid-setting-description') + expect(settingDescription).toBeVisible({ timeout: TIMEOUT }) }) diff --git a/electron/tests/system-monitor.e2e.spec.ts b/electron/tests/system-monitor.e2e.spec.ts deleted file mode 100644 index 747a8ae18..000000000 --- a/electron/tests/system-monitor.e2e.spec.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { _electron as electron } from 'playwright' -import { ElectronApplication, Page, expect, test } from '@playwright/test' - -import { - findLatestBuild, - parseElectronApp, - stubDialog, -} from 'electron-playwright-helpers' - -let electronApp: ElectronApplication -let page: Page - -test.beforeAll(async () => { - process.env.CI = 'e2e' - - const latestBuild = findLatestBuild('dist') - expect(latestBuild).toBeTruthy() - - // parse the packaged Electron app and find paths and other info - const appInfo = parseElectronApp(latestBuild) - expect(appInfo).toBeTruthy() - - electronApp = await electron.launch({ - args: [appInfo.main], // main file from package.json - executablePath: appInfo.executable, // path to the Electron executable - }) - await stubDialog(electronApp, 'showMessageBox', { response: 1 }) - - page = await electronApp.firstWindow() -}) - -test.afterAll(async () => { - await electronApp.close() - await page.close() -}) - -test('shows system monitor', async () => { - await page.getByTestId('System Monitor').first().click() - await page.getByTestId('testid-system-monitor').isVisible() - // More test cases here... -}) diff --git a/web/screens/ExploreModels/index.tsx b/web/screens/ExploreModels/index.tsx index d988fcafc..398b2db08 100644 --- a/web/screens/ExploreModels/index.tsx +++ b/web/screens/ExploreModels/index.tsx @@ -52,9 +52,12 @@ const ExploreModelsScreen = () => { if (loading) return return ( -
+
-
+
{ }, []) return ( -
+
diff --git a/web/screens/SystemMonitor/index.tsx b/web/screens/SystemMonitor/index.tsx index ed3b057a1..3bf8bb35e 100644 --- a/web/screens/SystemMonitor/index.tsx +++ b/web/screens/SystemMonitor/index.tsx @@ -35,7 +35,7 @@ export default function SystemMonitorScreen() { return (
-
+