Generated by Spark: Run npm run test:e2e --if-present || echo "No E2E tests configured"

> spark-template@0.0.0 test:e2e
> playwright test

[WebServer]
[WebServer] > spark-template@0.0.0 dev
[WebServer] > vite
[WebServer]
[WebServer]
[WebServer]   VITE v7.3.1  ready in 272 ms
[WebServer]
[WebServer]   ➜  Local:   http://localhost:5000/
[WebServer]   ➜  Network: http://10.1.0.146:5000/

Error: Timed out waiting 180000ms from config.webServer.

No E2E tests configured
This commit is contained in:
2026-01-17 14:10:31 +00:00
committed by GitHub
parent b165e2c333
commit 3df37b038d
4 changed files with 113 additions and 44 deletions

View File

@@ -2,9 +2,9 @@ import { test, expect } from '@playwright/test'
test.describe('CodeForge - Core Functionality', () => {
test.beforeEach(async ({ page }) => {
test.setTimeout(30000)
await page.goto('/', { waitUntil: 'domcontentloaded' })
await page.waitForTimeout(2000)
test.setTimeout(20000)
await page.goto('/', { waitUntil: 'domcontentloaded', timeout: 10000 })
await page.waitForLoadState('networkidle', { timeout: 5000 })
})
test('should load the application successfully', async ({ page }) => {
@@ -13,7 +13,7 @@ test.describe('CodeForge - Core Functionality', () => {
test('should display main navigation', async ({ page }) => {
const tabList = page.locator('[role="tablist"]').first()
await expect(tabList).toBeVisible({ timeout: 10000 })
await expect(tabList).toBeVisible({ timeout: 5000 })
})
test('should switch between tabs', async ({ page }) => {
@@ -22,44 +22,43 @@ test.describe('CodeForge - Core Functionality', () => {
if (tabCount > 1) {
await tabs.nth(1).click()
await page.waitForTimeout(500)
await expect(page.locator('[role="tabpanel"]:visible')).toBeVisible()
await expect(page.locator('[role="tabpanel"]:visible')).toBeVisible({ timeout: 3000 })
}
})
})
test.describe('CodeForge - Code Editor', () => {
test('should display Monaco editor', async ({ page }) => {
test.setTimeout(45000)
await page.goto('/', { waitUntil: 'domcontentloaded' })
await page.waitForTimeout(2000)
test.setTimeout(30000)
await page.goto('/', { waitUntil: 'domcontentloaded', timeout: 10000 })
await page.waitForLoadState('networkidle', { timeout: 5000 })
const codeEditorTab = page.locator('button[role="tab"]').filter({ hasText: /Code Editor/i }).first()
if (await codeEditorTab.isVisible({ timeout: 5000 })) {
if (await codeEditorTab.isVisible({ timeout: 3000 })) {
await codeEditorTab.click()
await page.waitForTimeout(3000)
await page.waitForLoadState('networkidle', { timeout: 10000 })
const monacoEditor = page.locator('.monaco-editor').first()
await expect(monacoEditor).toBeVisible({ timeout: 20000 })
await expect(monacoEditor).toBeVisible({ timeout: 15000 })
}
})
})
test.describe('CodeForge - Responsive Design', () => {
test('should work on mobile viewport', async ({ page }) => {
test.setTimeout(30000)
test.setTimeout(20000)
await page.setViewportSize({ width: 375, height: 667 })
await page.goto('/', { waitUntil: 'domcontentloaded' })
await page.waitForTimeout(2000)
await page.goto('/', { waitUntil: 'domcontentloaded', timeout: 10000 })
await page.waitForLoadState('networkidle', { timeout: 5000 })
await expect(page.locator('body')).toBeVisible()
})
test('should work on tablet viewport', async ({ page }) => {
test.setTimeout(30000)
test.setTimeout(20000)
await page.setViewportSize({ width: 768, height: 1024 })
await page.goto('/', { waitUntil: 'domcontentloaded' })
await page.waitForTimeout(2000)
await page.goto('/', { waitUntil: 'domcontentloaded', timeout: 10000 })
await page.waitForLoadState('networkidle', { timeout: 5000 })
await expect(page.locator('body')).toBeVisible()
})

View File

@@ -2,43 +2,41 @@ import { test, expect } from '@playwright/test'
test.describe('CodeForge - Smoke Tests', () => {
test('app loads successfully', async ({ page }) => {
test.setTimeout(30000)
await page.goto('/', { waitUntil: 'domcontentloaded' })
test.setTimeout(20000)
await page.goto('/', { waitUntil: 'networkidle', timeout: 15000 })
await expect(page.locator('body')).toBeVisible({ timeout: 10000 })
await page.waitForTimeout(2000)
await expect(page.locator('body')).toBeVisible({ timeout: 5000 })
})
test('can navigate to dashboard tab', async ({ page }) => {
test.setTimeout(30000)
await page.goto('/', { waitUntil: 'domcontentloaded' })
await page.waitForTimeout(2000)
test.setTimeout(20000)
await page.goto('/', { waitUntil: 'domcontentloaded', timeout: 10000 })
await page.waitForLoadState('networkidle', { timeout: 5000 })
const dashboardTab = page.locator('button[role="tab"]').filter({ hasText: /Dashboard/i }).first()
if (await dashboardTab.isVisible({ timeout: 5000 })) {
if (await dashboardTab.isVisible({ timeout: 3000 })) {
await dashboardTab.click()
await page.waitForTimeout(500)
await expect(page.locator('[role="tabpanel"]:visible')).toBeVisible({ timeout: 5000 })
await expect(page.locator('[role="tabpanel"]:visible')).toBeVisible({ timeout: 3000 })
}
})
test('Monaco editor loads in code editor', async ({ page }) => {
test.setTimeout(45000)
await page.goto('/', { waitUntil: 'domcontentloaded' })
await page.waitForTimeout(2000)
test.setTimeout(30000)
await page.goto('/', { waitUntil: 'domcontentloaded', timeout: 10000 })
await page.waitForLoadState('networkidle', { timeout: 5000 })
const codeEditorTab = page.locator('button[role="tab"]').filter({ hasText: /Code Editor/i }).first()
if (await codeEditorTab.isVisible({ timeout: 5000 })) {
if (await codeEditorTab.isVisible({ timeout: 3000 })) {
await codeEditorTab.click()
await page.waitForTimeout(3000)
await page.waitForLoadState('networkidle', { timeout: 10000 })
const monaco = page.locator('.monaco-editor').first()
await expect(monaco).toBeVisible({ timeout: 20000 })
await expect(monaco).toBeVisible({ timeout: 15000 })
}
})
test('no critical console errors', async ({ page }) => {
test.setTimeout(30000)
test.setTimeout(20000)
const errors: string[] = []
page.on('console', (msg) => {
if (msg.type() === 'error') {
@@ -46,8 +44,8 @@ test.describe('CodeForge - Smoke Tests', () => {
}
})
await page.goto('/', { waitUntil: 'domcontentloaded' })
await page.waitForTimeout(3000)
await page.goto('/', { waitUntil: 'domcontentloaded', timeout: 10000 })
await page.waitForLoadState('networkidle', { timeout: 5000 })
const criticalErrors = errors.filter(e =>
!e.includes('Download the React DevTools') &&