galaxis-po/frontend/e2e/backtest.spec.ts
zephyrdark efcfc0e090 feat: add E2E tests for backend and frontend
Backend (pytest):
- Auth flow tests (login, token, protected routes)
- Portfolio CRUD and transaction tests
- Strategy endpoint tests
- Backtest flow tests
- Snapshot and returns tests

Frontend (Playwright):
- Auth page tests
- Portfolio navigation tests
- Strategy page tests
- Backtest page tests
- Playwright configuration

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 12:30:13 +09:00

78 lines
2.0 KiB
TypeScript

import { test, expect } from "@playwright/test";
test.describe("Backtest", () => {
test.beforeEach(async ({ page }) => {
// Mock login
await page.addInitScript(() => {
localStorage.setItem("token", "test-token");
});
});
test("should show backtest page", async ({ page }) => {
await page.goto("/backtest");
// Check page title
await expect(page.locator("h1")).toContainText("백테스트");
});
test("should show backtest form", async ({ page }) => {
await page.goto("/backtest");
// Check for strategy selection
await expect(
page.locator('select, [role="combobox"], input[type="radio"]').first()
).toBeVisible();
});
test("should show date inputs", async ({ page }) => {
await page.goto("/backtest");
// Check for date inputs
await expect(
page.locator('input[type="date"], input[placeholder*="날짜"]').first()
).toBeVisible();
});
test("should show initial capital input", async ({ page }) => {
await page.goto("/backtest");
// Check for capital input
await expect(
page
.locator('input[name*="capital"], input[placeholder*="자본"]')
.first()
).toBeVisible();
});
test("should show rebalance period selection", async ({ page }) => {
await page.goto("/backtest");
// Check for period selection
const periodText = await page.locator(
'text=월별, text=분기별, text=리밸런싱, select'
);
await expect(periodText.first()).toBeVisible();
});
test("should have submit button", async ({ page }) => {
await page.goto("/backtest");
// Check for submit button
await expect(
page
.locator(
'button[type="submit"], button:has-text("실행"), button:has-text("시작")'
)
.first()
).toBeVisible();
});
test("should navigate to backtest result page", async ({ page }) => {
// Assuming backtest with ID 1 exists
await page.goto("/backtest/1");
// Should show result page or error
await expect(page.locator("body")).toBeVisible();
});
});