Spaces:
Running
Running
alessandro trinca tornidor
commited on
Commit
·
e259e97
1
Parent(s):
7157083
test: update playwright package, add e2e tests (english rec) for gradio app
Browse files
static/package.json
CHANGED
|
@@ -10,6 +10,6 @@
|
|
| 10 |
"author": "",
|
| 11 |
"license": "ISC",
|
| 12 |
"dependencies": {
|
| 13 |
-
"@playwright/test": "^1.
|
| 14 |
}
|
| 15 |
}
|
|
|
|
| 10 |
"author": "",
|
| 11 |
"license": "ISC",
|
| 12 |
"dependencies": {
|
| 13 |
+
"@playwright/test": "^1.49.0"
|
| 14 |
}
|
| 15 |
}
|
static/playwright.config.ts
CHANGED
|
@@ -25,13 +25,22 @@ export default defineConfig({
|
|
| 25 |
/* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */
|
| 26 |
use: {
|
| 27 |
/* Base URL to use in actions like `await page.goto('/')`. */
|
| 28 |
-
baseURL: 'http://127.0.0.1:3000',
|
|
|
|
| 29 |
viewport: { width: 1280, height: 900 },
|
| 30 |
ignoreHTTPSErrors: true,
|
| 31 |
permissions: ['microphone'],
|
| 32 |
screenshot: 'only-on-failure',
|
| 33 |
trace: 'on-first-retry',
|
| 34 |
video: 'retain-on-failure',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 35 |
/* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */
|
| 36 |
},
|
| 37 |
|
|
|
|
| 25 |
/* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */
|
| 26 |
use: {
|
| 27 |
/* Base URL to use in actions like `await page.goto('/')`. */
|
| 28 |
+
// baseURL: 'http://127.0.0.1:3000',
|
| 29 |
+
browserName: "chromium",
|
| 30 |
viewport: { width: 1280, height: 900 },
|
| 31 |
ignoreHTTPSErrors: true,
|
| 32 |
permissions: ['microphone'],
|
| 33 |
screenshot: 'only-on-failure',
|
| 34 |
trace: 'on-first-retry',
|
| 35 |
video: 'retain-on-failure',
|
| 36 |
+
launchOptions: {
|
| 37 |
+
headless: false,
|
| 38 |
+
ignoreDefaultArgs: ['--mute-audio'],
|
| 39 |
+
args: [
|
| 40 |
+
"--use-fake-device-for-media-stream",
|
| 41 |
+
"--use-fake-ui-for-media-stream",
|
| 42 |
+
],
|
| 43 |
+
}
|
| 44 |
/* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */
|
| 45 |
},
|
| 46 |
|
static/pnpm-lock.yaml
CHANGED
|
@@ -9,13 +9,13 @@ importers:
|
|
| 9 |
.:
|
| 10 |
dependencies:
|
| 11 |
'@playwright/test':
|
| 12 |
-
specifier: ^1.
|
| 13 |
-
version: 1.
|
| 14 |
|
| 15 |
packages:
|
| 16 |
|
| 17 |
-
'@playwright/test@1.
|
| 18 |
-
resolution: {integrity: sha512-
|
| 19 |
engines: {node: '>=18'}
|
| 20 |
hasBin: true
|
| 21 |
|
|
@@ -24,29 +24,29 @@ packages:
|
|
| 24 |
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
|
| 25 |
os: [darwin]
|
| 26 |
|
| 27 |
-
playwright-core@1.
|
| 28 |
-
resolution: {integrity: sha512-
|
| 29 |
engines: {node: '>=18'}
|
| 30 |
hasBin: true
|
| 31 |
|
| 32 |
-
playwright@1.
|
| 33 |
-
resolution: {integrity: sha512-
|
| 34 |
engines: {node: '>=18'}
|
| 35 |
hasBin: true
|
| 36 |
|
| 37 |
snapshots:
|
| 38 |
|
| 39 |
-
'@playwright/test@1.
|
| 40 |
dependencies:
|
| 41 |
-
playwright: 1.
|
| 42 |
|
| 43 |
fsevents@2.3.2:
|
| 44 |
optional: true
|
| 45 |
|
| 46 |
-
playwright-core@1.
|
| 47 |
|
| 48 |
-
playwright@1.
|
| 49 |
dependencies:
|
| 50 |
-
playwright-core: 1.
|
| 51 |
optionalDependencies:
|
| 52 |
fsevents: 2.3.2
|
|
|
|
| 9 |
.:
|
| 10 |
dependencies:
|
| 11 |
'@playwright/test':
|
| 12 |
+
specifier: ^1.49.0
|
| 13 |
+
version: 1.49.0
|
| 14 |
|
| 15 |
packages:
|
| 16 |
|
| 17 |
+
'@playwright/test@1.49.0':
|
| 18 |
+
resolution: {integrity: sha512-DMulbwQURa8rNIQrf94+jPJQ4FmOVdpE5ZppRNvWVjvhC+6sOeo28r8MgIpQRYouXRtt/FCCXU7zn20jnHR4Qw==}
|
| 19 |
engines: {node: '>=18'}
|
| 20 |
hasBin: true
|
| 21 |
|
|
|
|
| 24 |
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
|
| 25 |
os: [darwin]
|
| 26 |
|
| 27 |
+
playwright-core@1.49.0:
|
| 28 |
+
resolution: {integrity: sha512-R+3KKTQF3npy5GTiKH/T+kdhoJfJojjHESR1YEWhYuEKRVfVaxH3+4+GvXE5xyCngCxhxnykk0Vlah9v8fs3jA==}
|
| 29 |
engines: {node: '>=18'}
|
| 30 |
hasBin: true
|
| 31 |
|
| 32 |
+
playwright@1.49.0:
|
| 33 |
+
resolution: {integrity: sha512-eKpmys0UFDnfNb3vfsf8Vx2LEOtflgRebl0Im2eQQnYMA4Aqd+Zw8bEOB+7ZKvN76901mRnqdsiOGKxzVTbi7A==}
|
| 34 |
engines: {node: '>=18'}
|
| 35 |
hasBin: true
|
| 36 |
|
| 37 |
snapshots:
|
| 38 |
|
| 39 |
+
'@playwright/test@1.49.0':
|
| 40 |
dependencies:
|
| 41 |
+
playwright: 1.49.0
|
| 42 |
|
| 43 |
fsevents@2.3.2:
|
| 44 |
optional: true
|
| 45 |
|
| 46 |
+
playwright-core@1.49.0: {}
|
| 47 |
|
| 48 |
+
playwright@1.49.0:
|
| 49 |
dependencies:
|
| 50 |
+
playwright-core: 1.49.0
|
| 51 |
optionalDependencies:
|
| 52 |
fsevents: 2.3.2
|
static/tests/test-app-7860-rec-en.spec.ts
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import { test, expect, chromium } from "@playwright/test";
|
| 2 |
+
|
| 3 |
+
const basedirAudioFiles = `${__dirname}/../../tests/events`
|
| 4 |
+
|
| 5 |
+
test("test: get a phonetic accuracy evaluation from a recorded audio.", async () => {
|
| 6 |
+
const testAudioEnvPath = `${basedirAudioFiles}/test_en.wav`
|
| 7 |
+
console.log("start");
|
| 8 |
+
console.log("testAudioEnvPath", testAudioEnvPath, "#");
|
| 9 |
+
const browser = await chromium.launch({
|
| 10 |
+
args: [
|
| 11 |
+
"--use-fake-device-for-media-stream",
|
| 12 |
+
"--use-fake-ui-for-media-stream",
|
| 13 |
+
"--use-file-for-fake-audio-capture=/home/wlsuser/workspace/ai-pronunciation-trainer-hf/tests/events/test_en.wav",
|
| 14 |
+
],
|
| 15 |
+
ignoreDefaultArgs: ['--mute-audio']
|
| 16 |
+
})
|
| 17 |
+
|
| 18 |
+
const context = await browser.newContext();
|
| 19 |
+
context.grantPermissions(["microphone"]);
|
| 20 |
+
const page = await browser.newPage({});
|
| 21 |
+
|
| 22 |
+
await page.goto('http://localhost:7860/');
|
| 23 |
+
const buttonTTS = page.getByRole('button', { name: 'Run TTS' })
|
| 24 |
+
await buttonTTS.click();
|
| 25 |
+
// todo: improve this hardcoded timeout
|
| 26 |
+
await page.waitForTimeout(3000);
|
| 27 |
+
|
| 28 |
+
const buttonPlay = page.getByLabel('Play', { exact: true })
|
| 29 |
+
await buttonPlay.click();
|
| 30 |
+
const waveFormTTS = page.locator('.scroll > .wrapper').first();
|
| 31 |
+
await waveFormTTS.waitFor({ state: 'attached' });
|
| 32 |
+
await waveFormTTS.waitFor({ state: 'visible' });
|
| 33 |
+
await expect(waveFormTTS).toBeVisible();
|
| 34 |
+
console.log("waveFormTTS??");
|
| 35 |
+
|
| 36 |
+
const buttonRecordTTS = page.getByRole('button', { name: 'Record', exact: true })
|
| 37 |
+
await buttonRecordTTS.click();
|
| 38 |
+
console.log("buttonRecordTTS??");
|
| 39 |
+
const buttonStopTTS = page.getByRole('button', { name: 'Stop', exact: true })
|
| 40 |
+
await buttonStopTTS.click();
|
| 41 |
+
console.log("buttonStopTTS??");
|
| 42 |
+
|
| 43 |
+
const buttonRecognizeSpeechAccuracy = page.getByRole('button', { name: 'Recognize speech accuracy' })
|
| 44 |
+
console.log("buttonRecognizeSpeechAccuracy??");
|
| 45 |
+
console.log("buttonRecognizeSpeechAccuracy??");
|
| 46 |
+
await buttonRecognizeSpeechAccuracy.click();
|
| 47 |
+
console.log("buttonRecognizeSpeechAccuracy=>click!");
|
| 48 |
+
console.log("buttonRecognizeSpeechAccuracy=>click!");
|
| 49 |
+
await page.waitForTimeout(300);
|
| 50 |
+
|
| 51 |
+
const errorsElements = page.getByText(/Error/);
|
| 52 |
+
const ErrorText = errorsElements.all()
|
| 53 |
+
console.log("ErrorText:", (await ErrorText).length, "#");
|
| 54 |
+
await expect(errorsElements).toHaveCount(0);
|
| 55 |
+
console.log("end");
|
| 56 |
+
await page.close();
|
| 57 |
+
});
|
static/tests/test-app-7860-upload-en.spec.ts
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import { test, expect, chromium, Locator } from "@playwright/test";
|
| 2 |
+
|
| 3 |
+
const basedirAudioFiles = `${__dirname}/../../tests/events`
|
| 4 |
+
|
| 5 |
+
test("test: get a phonetic accuracy evaluation from an uploaded audio file.", async () => {
|
| 6 |
+
const testAudioEnvPath = `${basedirAudioFiles}/test_en.wav`
|
| 7 |
+
console.log("start");
|
| 8 |
+
console.log("testAudioEnvPath", testAudioEnvPath, "#");
|
| 9 |
+
|
| 10 |
+
const browser = await chromium.launch({
|
| 11 |
+
args: [
|
| 12 |
+
"--use-fake-device-for-media-stream",
|
| 13 |
+
],
|
| 14 |
+
ignoreDefaultArgs: ['--mute-audio']
|
| 15 |
+
})
|
| 16 |
+
|
| 17 |
+
const context = await browser.newContext();
|
| 18 |
+
context.grantPermissions(["microphone"]);
|
| 19 |
+
const page = await browser.newPage({});
|
| 20 |
+
|
| 21 |
+
await page.goto('http://localhost:7860/');
|
| 22 |
+
await page.getByRole('button', { name: 'Run TTS' }).click();
|
| 23 |
+
const buttonPlay = page.getByLabel('Play', { exact: true })
|
| 24 |
+
await buttonPlay.click();
|
| 25 |
+
const waveFormTTS = page.locator('.scroll > .wrapper').first();
|
| 26 |
+
await waveFormTTS.waitFor({ state: 'attached' });
|
| 27 |
+
await waveFormTTS.waitFor({ state: 'visible' });
|
| 28 |
+
await expect(waveFormTTS).toBeVisible();
|
| 29 |
+
console.log("waveFormTTS??");
|
| 30 |
+
|
| 31 |
+
const fileChooserPromise = page.waitForEvent('filechooser');
|
| 32 |
+
await page.getByLabel('Upload file').click();
|
| 33 |
+
await page.getByRole('button', { name: 'Drop Audio Here - or - Click' }).click();
|
| 34 |
+
const fileChooser = await fileChooserPromise;
|
| 35 |
+
await fileChooser.setFiles(testAudioEnvPath);
|
| 36 |
+
|
| 37 |
+
await page.getByRole('button', { name: 'Recognize speech accuracy' }).click();
|
| 38 |
+
|
| 39 |
+
await page.waitForTimeout(300);
|
| 40 |
+
const errorsElements = page.getByText(/Error/);
|
| 41 |
+
const ErrorText = errorsElements.all()
|
| 42 |
+
console.log("ErrorText:", (await ErrorText).length, "#");
|
| 43 |
+
await expect(errorsElements).toHaveCount(0);
|
| 44 |
+
console.log("end");
|
| 45 |
+
await page.close();
|
| 46 |
+
});
|
static/tests/{test-1.spec.ts → test-webApp-3000.spec.ts}
RENAMED
|
@@ -10,7 +10,7 @@ test("test: get a custom sample writing within the input field.", async () => {
|
|
| 10 |
const context = await browser.newContext();
|
| 11 |
context.grantPermissions(["microphone"]);
|
| 12 |
const page = await browser.newPage({});
|
| 13 |
-
await page.goto("
|
| 14 |
|
| 15 |
const inputField = page.getByPlaceholder(
|
| 16 |
"Write and press enter to filter"
|
|
|
|
| 10 |
const context = await browser.newContext();
|
| 11 |
context.grantPermissions(["microphone"]);
|
| 12 |
const page = await browser.newPage({});
|
| 13 |
+
await page.goto("http://localhost:3000");
|
| 14 |
|
| 15 |
const inputField = page.getByPlaceholder(
|
| 16 |
"Write and press enter to filter"
|