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>
78 lines
2.0 KiB
TypeScript
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();
|
|
});
|
|
});
|