Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 45 additions & 0 deletions pt/web/firebird/tests/restricted_view.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
import { expect, test } from '@playwright/test';

// These tests run as an anonymous (not-logged-in) user.
// The auth specs cover the same items under authenticated access.
test.describe('restricted view', () => {
test.describe('ic_currently_held', () => {
test.beforeEach(async ({ page }) => {
await page.goto('/cgi/pt?id=test.ic_currently_held');
});

test('shows "not available online" warning', async ({ page }) => {
await expect(page.getByText('not available online')).toBeVisible();
});

test('shows "Limited - search only" label', async ({ page }) => {
await expect(page.getByText('Limited - search only')).toBeVisible();
});

test('does not render any page scan images', async ({ page }) => {
await expect(page.getByRole('figure')).toHaveCount(0);
});

test('does not render the reader toolbar', async ({ page }) => {
await expect(page.locator('.view--toolbar')).toHaveCount(0);
Comment thread
eumalin marked this conversation as resolved.
});

test('shows a search form so users can still search the text', async ({ page }) => {
await expect(page.getByLabel('Search in this text')).toBeVisible();
});
});

test.describe('ic_not_held', () => {
test.beforeEach(async ({ page }) => {
await page.goto('/cgi/pt?id=test.ic_not_held');
});

test('shows "not available online" warning', async ({ page }) => {
await expect(page.getByText('not available online')).toBeVisible();
});

test('does not render any page scan images', async ({ page }) => {
await expect(page.getByRole('figure')).toHaveCount(0);
});
});
});
42 changes: 42 additions & 0 deletions pt/web/firebird/tests/search.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
import { expect, test } from '@playwright/test';

test.describe('search in this text', () => {
test.beforeEach(async ({ page }) => {
await page.goto('/cgi/pt?id=test.pd_open');
await page.getByRole('button', { name: 'Allow all cookies' }).click();
const panelButton = page.getByRole('button', { name: 'Search in This Text' });
await panelButton.click();
await expect(panelButton).toHaveAttribute('aria-expanded', 'true');
});

test('search input is visible when panel is open', async ({ page }) => {
await expect(page.getByLabel('Search in this text')).toBeVisible();
});

test('submitting a query updates the URL with q1 param', async ({ page }) => {
await page.getByLabel('Search in this text').fill('the');
await page.getByRole('button', { name: 'Submit search' }).click();
await expect(page).toHaveURL(/q1=the/);
});

test('search shows a result count message', async ({ page }) => {
await page.getByLabel('Search in this text').fill('the');
await page.getByRole('button', { name: 'Submit search' }).click();
await expect(page.getByText(/results.*for/i)).toBeVisible({ timeout: 10_000 });
});

test('clearing search removes the q1 param from URL', async ({ page }) => {
await page.getByLabel('Search in this text').fill('the');
await page.getByRole('button', { name: 'Submit search' }).click();
await expect(page.getByText(/results.*for/i)).toBeVisible({ timeout: 10_000 });

await page.getByRole('button', { name: 'Clear search' }).click();
await expect(page).not.toHaveURL(/q1=the/);
await expect(page.getByLabel('Search in this text')).toHaveValue('');
});

test('loading the page with q1 param pre-fills the search input', async ({ page }) => {
await page.goto('/cgi/pt?id=test.pd_open&q1=hello');
await expect(page.getByLabel('Search in this text')).toHaveValue('hello');
});
});
Loading