Playwright under e2e/, its own npm project so Meteor never sees the dependency (.meteorignore keeps the directory out of the bundle — a config file at the app root is otherwise eagerly loaded into the server and crashes it). Covers what the phase asked for: sign up / log in, creating a zone from the map and watching the union get painted on /subscriptions and /zones, removing it again, commenting on a fire, and switching language. The zone spec is the flow that froze staging on 2026-07-30 — it passes only if the server is still answering DDP while the union is recomputed. docker-compose.e2e.yml is a throwaway stack (Mongo on tmpfs, no named volume) so the destructive seeds cannot be pointed at anything real by accident; playwright.config.js refuses to start against the staging or production domains. i18n.spec.js leaves a test.fixme on a real bug found while writing it: the language chosen in the profile does not survive a page reload.
44 lines
1.6 KiB
JavaScript
44 lines
1.6 KiB
JavaScript
import { test, expect } from '@playwright/test';
|
|
import { signUp, logIn, newEmail } from '../support/app.js';
|
|
|
|
test.describe('registro y acceso', () => {
|
|
test('a new account can sign up, log out and log back in', async ({ page }) => {
|
|
const email = newEmail();
|
|
await signUp(page, email);
|
|
|
|
// Signed in: the navbar swaps the login links for the profile and logout ones.
|
|
await expect(page.locator('#logout')).toBeVisible();
|
|
await expect(page.locator('#profile')).toContainText('E2E Tester');
|
|
|
|
await page.click('#logout');
|
|
await expect(page.locator('#login')).toBeVisible();
|
|
|
|
await logIn(page, email);
|
|
await expect(page.locator('#logout')).toBeVisible();
|
|
});
|
|
|
|
test('signing up is refused without accepting the terms', async ({ page }) => {
|
|
await page.goto('/signup');
|
|
await page.fill('input[name=firstName]', 'E2E');
|
|
await page.fill('input[name=lastName]', 'Tester');
|
|
await page.fill('input[name=emailAddress]', newEmail());
|
|
await page.fill('input[name=password]', 'password');
|
|
|
|
await expect(page.locator('#signUpSubmit')).toBeDisabled();
|
|
});
|
|
|
|
test('a wrong password does not sign anybody in', async ({ page }) => {
|
|
const email = newEmail();
|
|
await signUp(page, email);
|
|
await page.click('#logout');
|
|
|
|
await logIn(page, email, 'not-the-password');
|
|
await expect(page.locator('#loginSubmit')).toBeVisible();
|
|
await expect(page.locator('#logout')).toHaveCount(0);
|
|
});
|
|
|
|
test('the private zones page sends anonymous visitors to the login', async ({ page }) => {
|
|
await page.goto('/subscriptions');
|
|
await expect(page.locator('#loginSubmit')).toBeVisible();
|
|
});
|
|
});
|