feat(e2e): add Playwright end-to-end tests for authentication, GRN, production, stock transfers, and adjustments

- Introduced Playwright configuration for e2e testing.
- Implemented authentication tests to validate login functionality.
- Created tests for GRN (Goods Receipt Note) to ensure proper stock handling.
- Developed production run tests to verify lifecycle and stock posting.
- Added stock transfer tests to check movement between warehouses.
- Implemented stock adjustment tests for positive and negative adjustments.
- Established API seeder for test data setup and verification.
- Enhanced utility functions for UI interactions and response handling.
This commit is contained in:
2026-08-05 13:23:07 +05:30
parent 8e24ed6375
commit c31e23c2b9
36 changed files with 20627 additions and 137 deletions
+29
View File
@@ -0,0 +1,29 @@
import { test, expect } from "@playwright/test"
import { LoginPage } from "../pages/LoginPage"
import { env } from "../support/env"
// Runs unauthenticated - unlike every other spec, it must not use the "chromium" project's
// saved storageState, since it is exercising the login form itself.
test.use({ storageState: { cookies: [], origins: [] } })
test.describe("Login", () => {
test("valid credentials redirect to the dashboard", async ({ page }) => {
const login = new LoginPage(page)
await login.goto()
await login.login(env.adminEmail, env.adminPassword)
await login.expectLoggedIn()
})
test("invalid password shows an inline error and stays on /login", async ({ page }) => {
const login = new LoginPage(page)
await login.goto()
await login.login(env.adminEmail, "definitely-not-the-password")
await login.expectError()
await expect(page).toHaveURL(/\/login/)
})
test("session-expired redirect shows the amber notice", async ({ page }) => {
await page.goto("/login?next=/dashboard/receiving/grn")
await expect(page.getByText(/session is missing or expired/i)).toBeVisible()
})
})