From f5cb07248d36080bb63e5b184ac4ee8ba198bb5f Mon Sep 17 00:00:00 2001 From: Michael Li Date: Tue, 28 Feb 2023 10:14:22 -0500 Subject: [PATCH] test(admin/e2e): Add login tests (#1647) --- ui/admin/tests/e2e/tests/login.spec.js | 74 ++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 ui/admin/tests/e2e/tests/login.spec.js diff --git a/ui/admin/tests/e2e/tests/login.spec.js b/ui/admin/tests/e2e/tests/login.spec.js new file mode 100644 index 000000000..1939a9f18 --- /dev/null +++ b/ui/admin/tests/e2e/tests/login.spec.js @@ -0,0 +1,74 @@ +/* eslint-disable no-undef */ +const { test, expect } = require('@playwright/test'); + +test('Log in, log out, and then log back in', async ({ page }) => { + await page.goto('/'); + + await page + .getByLabel('Login Name') + .fill(process.env.E2E_PASSWORD_ADMIN_LOGIN_NAME); + await page + .getByLabel('Password') + .fill(process.env.E2E_PASSWORD_ADMIN_PASSWORD); + await page.getByRole('button', { name: 'Sign In' }).click(); + await expect(page.getByRole('navigation', { name: 'General' })).toBeVisible(); + await expect( + page.getByText(process.env.E2E_PASSWORD_ADMIN_LOGIN_NAME) + ).toBeEnabled(); + + await page.getByText(process.env.E2E_PASSWORD_ADMIN_LOGIN_NAME).click(); + await page.getByRole('button', { name: 'Sign Out' }).click(); + await expect(page.getByRole('button', { name: 'Sign In' })).toBeVisible(); + + await page.reload(); + + await page + .getByLabel('Login Name') + .fill(process.env.E2E_PASSWORD_ADMIN_LOGIN_NAME); + await page + .getByLabel('Password') + .fill(process.env.E2E_PASSWORD_ADMIN_PASSWORD); + await page.getByRole('button', { name: 'Sign In' }).click(); + await expect(page.getByRole('navigation', { name: 'General' })).toBeVisible(); +}); + +test.describe('Failure Cases', async () => { + test.beforeEach(async ({ page }) => { + await page.goto('/'); + }); + + test('Log in with invalid password', async ({ page }) => { + await page + .getByLabel('Login Name') + .fill(process.env.E2E_PASSWORD_ADMIN_LOGIN_NAME); + await page.getByLabel('Password').fill('badpassword'); + await page.getByRole('button', { name: 'Sign In' }).click(); + await expect(page.getByRole('alert').getByText('Error')).toBeVisible(); + await expect(page.getByRole('button', { name: 'Sign In' })).toBeVisible(); + await expect( + page.getByText(process.env.E2E_PASSWORD_ADMIN_LOGIN_NAME) + ).toBeHidden(); + }); + + test('Log in with only username', async ({ page }) => { + await page.getByLabel('Login Name').fill('testuser'); + await page.getByRole('button', { name: 'Sign In' }).click(); + await expect(page.getByRole('alert').getByText('Error')).toBeVisible(); + await expect(page.getByRole('button', { name: 'Sign In' })).toBeVisible(); + await expect( + page.getByText(process.env.E2E_PASSWORD_ADMIN_LOGIN_NAME) + ).toBeHidden(); + }); + + test('Log in with only password', async ({ page }) => { + await page + .getByLabel('Password') + .fill(process.env.E2E_PASSWORD_ADMIN_PASSWORD); + await page.getByRole('button', { name: 'Sign In' }).click(); + await expect(page.getByRole('alert').getByText('Error')).toBeVisible(); + await expect(page.getByRole('button', { name: 'Sign In' })).toBeVisible(); + await expect( + page.getByText(process.env.E2E_PASSWORD_ADMIN_LOGIN_NAME) + ).toBeHidden(); + }); +});