From 87146973dadef8398cc7305c1e090bc916fe4dc6 Mon Sep 17 00:00:00 2001 From: Arman Date: Wed, 27 Apr 2022 17:56:52 +0200 Subject: [PATCH] feat: added e2e tests for login page --- tests/e2e/login.spec.ts | 51 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/tests/e2e/login.spec.ts b/tests/e2e/login.spec.ts index 2df0ebffa..d73728622 100644 --- a/tests/e2e/login.spec.ts +++ b/tests/e2e/login.spec.ts @@ -1,9 +1,58 @@ import { expect, test } from '@playwright/test'; -test('login page has inputs', async ({ page }) => { +/*TODO: Things to test in login: + - presence of forgot password link + - validation message on wrong input + - correct response and redirect after login + - logout works + - back button does not log out user + - forward button does not log in user after logout + - limit to total number of login attempts + - +*/ + +test('login page has inputs and button', async ({ page }) => { await page.goto('/login'); const mail = page.locator('id=email'); const pass = page.locator('id=password'); + const button = page.locator('button:has-text("Login")'); expect(await mail.isVisible()); expect(await pass.isVisible()); + expect(await button.isVisible()); +}); + +test('login page has a working sign up link', async ({ page }) => { + await page.goto('/login'); + const signup = page.locator('a[href="/register"]'); + expect(await signup.isVisible()); + await signup.click(); + await page.waitForNavigation(); + expect(page.url()).toContain('/register'); + expect(await page.locator('Register').isVisible()); +}); + +test('login page inputs are navigable by keyboard', async ({ page }) => { + await page.goto('/login'); + const mail = page.locator('id=email'); + await mail.focus(); + await page.keyboard.type('wrongemail@apppwrite.io'); + await page.keyboard.press('Tab'); + await page.keyboard.type('password'); + await page.keyboard.press('Tab'); + await page.keyboard.press('Enter'); + expect(await page.locator('.toaster-item').isVisible()); + expect(await page.locator('text=Invalid credentials').isVisible()); +}); + +test('login page shows error & response is 401 with wrong inputs', async ({ page }) => { + await page.goto('/login'); + + await page.fill('id=email', 'wrongemail@apppwrite.io'); + await page.fill('id=password', 'wrongpassword'); + await page.click('button:has-text("Login")'); + page.on('response', (response) => { + expect(response.status()).toBe(401); + }); + expect(await page.locator('.toaster-item').isVisible()); + expect(await page.locator('text=Invalid credentials').isVisible()); });