mirror of
https://github.com/documenso/documenso.git
synced 2025-11-13 08:13:56 +10:00
130 lines
4.7 KiB
TypeScript
130 lines
4.7 KiB
TypeScript
import { type Page, expect, test } from '@playwright/test';
|
|
import path from 'path';
|
|
|
|
import { seedUser } from '@documenso/prisma/seed/users';
|
|
|
|
import { apiSignin } from '../fixtures/authentication';
|
|
|
|
const SINGLE_PLACEHOLDER_PDF_PATH = path.join(
|
|
__dirname,
|
|
'../../../assets/project-proposal-single-recipient.pdf',
|
|
);
|
|
|
|
const MULTIPLE_PLACEHOLDER_PDF_PATH = path.join(
|
|
__dirname,
|
|
'../../../assets/project-proposal-multiple-fields-and-recipients.pdf',
|
|
);
|
|
|
|
const setupUserAndSignIn = async (page: Page) => {
|
|
const { user, team } = await seedUser();
|
|
|
|
await apiSignin({
|
|
page,
|
|
email: user.email,
|
|
redirectPath: `/t/${team.url}/documents`,
|
|
});
|
|
|
|
return { user, team };
|
|
};
|
|
|
|
const uploadPdfAndContinue = async (page: Page, pdfPath: string, continueClicks: number = 1) => {
|
|
const fileInput = page.locator('input[type="file"]').nth(1);
|
|
await fileInput.waitFor({ state: 'attached' });
|
|
await fileInput.setInputFiles(pdfPath);
|
|
|
|
await page.waitForTimeout(3000);
|
|
|
|
for (let i = 0; i < continueClicks; i++) {
|
|
await page.getByRole('button', { name: 'Continue' }).click();
|
|
}
|
|
};
|
|
|
|
test.describe('PDF Placeholders with single recipient', () => {
|
|
test('[AUTO_PLACING_FIELDS]: should automatically create recipients from PDF placeholders', async ({
|
|
page,
|
|
}) => {
|
|
await setupUserAndSignIn(page);
|
|
await uploadPdfAndContinue(page, SINGLE_PLACEHOLDER_PDF_PATH, 1);
|
|
|
|
await expect(page.getByRole('heading', { name: 'Add Signers' })).toBeVisible();
|
|
await expect(page.getByPlaceholder('Email')).toHaveValue('recipient.1@documenso.com');
|
|
await expect(page.getByPlaceholder('Name')).toHaveValue('Recipient 1');
|
|
});
|
|
|
|
test('[AUTO_PLACING_FIELDS]: should automatically place fields from PDF placeholders', async ({
|
|
page,
|
|
}) => {
|
|
await setupUserAndSignIn(page);
|
|
await uploadPdfAndContinue(page, SINGLE_PLACEHOLDER_PDF_PATH, 2);
|
|
|
|
await expect(page.getByRole('heading', { name: 'Add Fields' })).toBeVisible();
|
|
|
|
await expect(page.locator('[data-field-type="SIGNATURE"]')).toBeVisible();
|
|
await expect(page.locator('[data-field-type="EMAIL"]')).toBeVisible();
|
|
await expect(page.locator('[data-field-type="NAME"]')).toBeVisible();
|
|
await expect(page.locator('[data-field-type="TEXT"]')).toBeVisible();
|
|
});
|
|
|
|
test('[AUTO_PLACING_FIELDS]: should automatically configure fields from PDF placeholders', async ({
|
|
page,
|
|
}) => {
|
|
await setupUserAndSignIn(page);
|
|
await uploadPdfAndContinue(page, SINGLE_PLACEHOLDER_PDF_PATH, 2);
|
|
|
|
await page.getByText('Text').nth(1).click();
|
|
await page.getByRole('button', { name: 'Advanced settings' }).click();
|
|
|
|
await expect(page.getByRole('heading', { name: 'Advanced settings' })).toBeVisible();
|
|
await expect(
|
|
page
|
|
.locator('div')
|
|
.filter({ hasText: /^Required field$/ })
|
|
.getByRole('switch'),
|
|
).toBeChecked();
|
|
|
|
await expect(page.getByRole('combobox')).toHaveText('Right');
|
|
});
|
|
});
|
|
|
|
test.describe('PDF Placeholders with multiple recipients', () => {
|
|
test('[AUTO_PLACING_FIELDS]: should automatically create recipients from PDF placeholders', async ({
|
|
page,
|
|
}) => {
|
|
await setupUserAndSignIn(page);
|
|
await uploadPdfAndContinue(page, MULTIPLE_PLACEHOLDER_PDF_PATH, 1);
|
|
|
|
await expect(page.getByTestId('signer-email-input').first()).toHaveValue(
|
|
'recipient.1@documenso.com',
|
|
);
|
|
await expect(page.getByLabel('Name').first()).toHaveValue('Recipient 1');
|
|
|
|
await expect(page.getByTestId('signer-email-input').nth(1)).toHaveValue(
|
|
'recipient.2@documenso.com',
|
|
);
|
|
await expect(page.getByLabel('Name').nth(1)).toHaveValue('Recipient 2');
|
|
|
|
await expect(page.getByTestId('signer-email-input').nth(2)).toHaveValue(
|
|
'recipient.3@documenso.com',
|
|
);
|
|
await expect(page.getByLabel('Name').nth(2)).toHaveValue('Recipient 3');
|
|
});
|
|
|
|
test('[AUTO_PLACING_FIELDS]: should automatically create fields from PDF placeholders', async ({
|
|
page,
|
|
}) => {
|
|
await setupUserAndSignIn(page);
|
|
await uploadPdfAndContinue(page, MULTIPLE_PLACEHOLDER_PDF_PATH, 2);
|
|
|
|
await expect(page.getByRole('heading', { name: 'Add Fields' })).toBeVisible();
|
|
|
|
await expect(page.locator('[data-field-type="SIGNATURE"]').first()).toBeVisible();
|
|
await expect(page.locator('[data-field-type="SIGNATURE"]').nth(1)).toBeVisible();
|
|
await expect(page.locator('[data-field-type="SIGNATURE"]').nth(2)).toBeVisible();
|
|
await expect(page.locator('[data-field-type="EMAIL"]').first()).toBeVisible();
|
|
await expect(page.locator('[data-field-type="EMAIL"]').nth(1)).toBeVisible();
|
|
await expect(page.locator('[data-field-type="NAME"]')).toBeVisible();
|
|
await expect(page.locator('[data-field-type="TEXT"]')).toBeVisible();
|
|
await expect(page.locator('[data-field-type="NUMBER"]')).toBeVisible();
|
|
});
|
|
});
|