Simplify connection flow, mobile transfer UI, and header actions
This commit is contained in:
@@ -83,16 +83,18 @@ try {
|
||||
await sender.getByRole('textbox', { name: '기기 이름' }).fill('보내는 Mac');
|
||||
await sender.getByRole('button', { name: '이름 저장' }).click();
|
||||
await sender.locator('.device-name').filter({ hasText: '보내는 Mac' }).waitFor();
|
||||
await sender.getByRole('button', { name: 'QR · 코드로 연결', exact: true }).click();
|
||||
await sender.getByRole('button', { name: '다른 기기 연결', exact: true }).click();
|
||||
await sender.getByRole('button', { name: '연결 공간 만들기' }).click();
|
||||
await sender.getByRole('button', { name: '만들기', exact: true }).click();
|
||||
await sender.locator('.invite-code').waitFor();
|
||||
const code = (await sender.locator('.invite-code').innerText()).replace(/\s/g, '');
|
||||
await receiver.getByRole('button', { name: 'QR · 코드로 연결', exact: true }).click();
|
||||
await receiver.getByRole('button', { name: '다른 기기 연결', exact: true }).click();
|
||||
await receiver.getByRole('button', { name: '연결 공간 참여', exact: true }).click();
|
||||
await receiver.getByRole('textbox', { name: '연결 코드' }).fill(code);
|
||||
await receiver.getByRole('button', { name: '참여', exact: true }).click();
|
||||
await receiver.getByRole('button', { name: '참여하기', exact: true }).click();
|
||||
await receiver.locator('.room-leave').waitFor();
|
||||
await sender.getByRole('dialog', { name: 'QR · 코드로 연결' }).waitFor({ state: 'hidden' });
|
||||
await receiver.getByRole('dialog', { name: 'QR · 코드로 연결' }).waitFor({ state: 'hidden' });
|
||||
await sender.locator('.modal-backdrop').waitFor({ state: 'hidden' });
|
||||
await receiver.locator('.modal-backdrop').waitFor({ state: 'hidden' });
|
||||
await sender.locator('.peer-card').first().waitFor();
|
||||
await sender.locator('.peer-card').first().click();
|
||||
const secret = 'https://example.com/?q=%3Cscript%3Ealert(1)%3C%2Fscript%3E';
|
||||
@@ -262,6 +264,13 @@ try {
|
||||
uploadCaptured,
|
||||
new Promise((_, reject) => setTimeout(() => reject(Error('업로드 시작 대기 실패')), 10000)),
|
||||
]);
|
||||
await sender.setViewportSize({ width: 390, height: 844 });
|
||||
await sender.locator('.file-transfer-progress progress').waitFor();
|
||||
const listText = await sender.locator('.content-pane').innerText();
|
||||
assert.equal(listText.split('browser.txt').length - 1, 1, '파일명은 목록에 한 번만 표시');
|
||||
assert(!listText.includes('전송 중입니다.'), '진행률이 있으면 전송 중 안내를 반복하지 않음');
|
||||
assert.equal(await sender.locator('.composer-progress').count(), 0);
|
||||
await sender.screenshot({ path: 'tests/e2e/file-progress-mobile.png' });
|
||||
await sender.locator('.send-button').filter({ hasText: '전송 취소' }).click();
|
||||
releaseUpload();
|
||||
await receiver.locator('.receiving-card').waitFor({ state: 'hidden' });
|
||||
@@ -277,14 +286,17 @@ try {
|
||||
await sender.evaluate(() => getComputedStyle(document.documentElement).backgroundColor),
|
||||
'rgb(0, 0, 0)',
|
||||
);
|
||||
await sender.setViewportSize({ width: 1440, height: 1050 });
|
||||
await sender.screenshot({ path: 'tests/e2e/desktop.png', fullPage: true });
|
||||
await sender.getByRole('button', { name: '라이트 테마로 전환', exact: true }).click();
|
||||
await sender.getByRole('button', { name: '더보기', exact: true }).click();
|
||||
await sender.getByRole('menuitem', { name: '라이트 테마로 전환', exact: true }).click();
|
||||
assert.equal(
|
||||
await sender.evaluate(() => getComputedStyle(document.documentElement).backgroundColor),
|
||||
'rgb(250, 250, 250)',
|
||||
);
|
||||
await sender.screenshot({ path: 'tests/e2e/light-desktop.png', fullPage: true });
|
||||
await sender.getByRole('button', { name: '다크 테마로 전환', exact: true }).click();
|
||||
await sender.getByRole('button', { name: '더보기', exact: true }).click();
|
||||
await sender.getByRole('menuitem', { name: '다크 테마로 전환', exact: true }).click();
|
||||
await receiver.screenshot({ path: 'tests/e2e/mobile.png', fullPage: true });
|
||||
assert.equal(
|
||||
await receiver.evaluate(() => document.documentElement.scrollWidth <= window.innerWidth),
|
||||
@@ -303,11 +315,12 @@ try {
|
||||
await urlReceiver.goto(url);
|
||||
await urlReceiver.locator('.device-name').waitFor();
|
||||
const receiverCode = (await urlReceiver.locator('.footer-device-code').innerText()).trim();
|
||||
await urlReceiver.getByRole('button', { name: 'QR · 코드로 연결', exact: true }).click();
|
||||
await urlReceiver.getByRole('button', { name: '다른 기기 연결', exact: true }).click();
|
||||
await urlReceiver.getByRole('button', { name: '연결 공간 참여', exact: true }).click();
|
||||
await urlReceiver.getByRole('textbox', { name: '연결 코드' }).fill(code);
|
||||
await urlReceiver.getByRole('button', { name: '참여', exact: true }).click();
|
||||
await urlReceiver.getByRole('button', { name: '참여하기', exact: true }).click();
|
||||
await urlReceiver.locator('.room-leave').waitFor();
|
||||
await urlReceiver.getByRole('dialog', { name: 'QR · 코드로 연결' }).waitFor({ state: 'hidden' });
|
||||
await urlReceiver.locator('.modal-backdrop').waitFor({ state: 'hidden' });
|
||||
await second.locator('.peer-card').filter({ hasText: receiverCode }).waitFor();
|
||||
await second.evaluate(() => {
|
||||
window.__hopClipboard = '일반 텍스트는 전송하지 않습니다.';
|
||||
|
||||
Reference in New Issue
Block a user