Skip to content

Commit

Permalink
Add e2e test
Browse files Browse the repository at this point in the history
  • Loading branch information
kadoshita committed Apr 30, 2023
1 parent 1cea059 commit d2ba024
Show file tree
Hide file tree
Showing 5 changed files with 109 additions and 2 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,5 @@ node_modules
dist
docs-dist
*.local
coverage/
coverage/
screenshot.png
42 changes: 42 additions & 0 deletions __tests__/e2e/index.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
import { afterAll, beforeAll, describe, test } from 'vitest';
import { PreviewServer, preview } from 'vite';
import { Browser, Page, chromium } from 'playwright';
import { expect } from '@playwright/test';

describe('react-select-media-devices-modal', async () => {
let server: PreviewServer;
let browser: Browser;
let page: Page;

beforeAll(async () => {
server = await preview({ preview: { port: 3000 }, root: 'example' });
browser = await chromium.launch({
headless: process.env.CI === 'true',
args: ['--use-fake-ui-for-media-stream'],
});
page = await browser.newPage();
});

afterAll(async () => {
await browser.close();
await new Promise<void>((resolve, reject) => {
server.httpServer.close((err) => (err ? reject(err) : resolve()));
});
});

test('should open modal and select devices', async () => {
await page.goto('http://localhost:3000');
const selectDeviceButton = page.getByText('Select Device');
await expect(selectDeviceButton).toBeVisible();

await selectDeviceButton.click();

await expect(page.getByText('Audio input device')).toBeVisible();

await new Promise((r) => setTimeout(r, 3000));

await page.screenshot({ path: 'screenshot.png', fullPage: true });

// const selectMediaDevicesModal = await page.$('[class*=modal');
}, 60_000);
});
49 changes: 49 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 4 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,8 @@
"dev": "vite serve example",
"build": "vite build",
"test": "vitest",
"coverage": "vitest run --coverage"
"coverage": "vitest run --coverage",
"test:e2e": "vitest run -c vitest.e2e.config.ts"
},
"dependencies": {
"react": "^18.2.0",
Expand All @@ -43,6 +44,7 @@
},
"devDependencies": {
"@mdx-js/react": "^2.3.0",
"@playwright/test": "^1.33.0",
"@rollup/plugin-typescript": "^11.1.0",
"@testing-library/jest-dom": "^5.16.5",
"@testing-library/react": "^14.0.0",
Expand All @@ -53,6 +55,7 @@
"@vitest/coverage-c8": "^0.30.1",
"@vitest/ui": "^0.30.1",
"jsdom": "^21.1.1",
"playwright": "^1.33.0",
"rimraf": "^4.4.1",
"serve": "^14.2.0",
"vite": "^4.2.1",
Expand Down
12 changes: 12 additions & 0 deletions vitest.e2e.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import { defineConfig } from 'vitest/config';
import react from '@vitejs/plugin-react';

export default defineConfig({
plugins: [react()],
test: {
include: ['**/e2e/*.test.ts'],
globals: true,
testTimeout: 60_000,
hookTimeout: 60_000,
},
});

0 comments on commit d2ba024

Please sign in to comment.