Skip to content

Commit 941a9bf

Browse files
HusneShabbirHusneShabbir
andauthored
Add test for multiple file upload (#973)
* added test for Multiple file upload * renamed resuable assertion fn * renamed uploadFile fn --------- Co-authored-by: HusneShabbir <husneshabbir447@gmail.com>
1 parent 53f3ffb commit 941a9bf

2 files changed

Lines changed: 31 additions & 4 deletions

File tree

workspaces/lightspeed/packages/app/e2e-tests/lightspeed.test.ts

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,11 @@ import {
2828
} from './fixtures/responses';
2929
import { openLightspeed, sendMessage } from './utils/testHelper';
3030
import {
31-
uploadFile,
31+
uploadFiles,
3232
uploadAndAssertDuplicate,
3333
supportedFileTypes,
3434
validateFailedUpload,
35+
assertVisibilityState,
3536
} from './utils/fileUpload';
3637
import {
3738
assertChatDialogInitialState,
@@ -136,7 +137,7 @@ test.describe('File Attachment Validation', () => {
136137
for (const { path, name } of testFiles) {
137138
test(`should validate file: ${name}`, async ({ page }) => {
138139
const fileExtension = `.${name.split('.').pop()}`;
139-
await uploadFile(page, path);
140+
await uploadFiles(page, [path]);
140141

141142
if (supportedFileTypes.includes(fileExtension)) {
142143
await uploadAndAssertDuplicate(page, path, name);
@@ -151,6 +152,23 @@ test.describe('File Attachment Validation', () => {
151152
}
152153
});
153154
}
155+
test(`Multiple file upload`, async ({ page }) => {
156+
const file1 = testFiles[0].path;
157+
const file2 = 'backstage.json';
158+
await uploadFiles(page, [file1, file2]);
159+
160+
const heading = page.getByRole('heading', {
161+
name: 'Danger alert: File upload',
162+
});
163+
const text = page.getByText('Uploaded more than one file.');
164+
const closeBtn = page.getByRole('button', { name: 'Close Danger alert:' });
165+
166+
await assertVisibilityState('visible', heading, text, closeBtn);
167+
168+
await closeBtn.click();
169+
170+
await assertVisibilityState('hidden', heading, text, closeBtn);
171+
});
154172
});
155173

156174
test.describe('Conversation', () => {

workspaces/lightspeed/packages/app/e2e-tests/utils/fileUpload.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ export async function triggerFileChooser(
2828
return fileChooser;
2929
}
3030

31-
export async function uploadFile(page: Page, filePath: string) {
31+
export async function uploadFiles(page: Page, filePath: string[]) {
3232
const attachButton = page.getByRole('button', { name: 'Attach' });
3333
await expect(attachButton).toBeVisible();
3434

@@ -42,7 +42,7 @@ export async function uploadAndAssertDuplicate(
4242
fileName: string,
4343
) {
4444
await validateSuccessfulUpload(page, fileName);
45-
await uploadFile(page, filePath);
45+
await uploadFiles(page, [filePath]);
4646
await expect(
4747
page.getByRole('heading', { name: 'File upload failed' }),
4848
).toBeVisible();
@@ -93,3 +93,12 @@ export async function validateFailedUpload(page: Page) {
9393
await expect(alertHeader).toBeHidden();
9494
await expect(alertText).toBeHidden();
9595
}
96+
97+
export async function assertVisibilityState(
98+
state: 'visible' | 'hidden',
99+
...locators: Locator[]
100+
) {
101+
for (const locator of locators) {
102+
await expect(locator)[state === 'visible' ? 'toBeVisible' : 'toBeHidden']();
103+
}
104+
}

0 commit comments

Comments
 (0)