Test: fix e2e tests (#318)
* fix whisper check test * ifx test action * update test action * fix test in ubuntu * update test-enjoy-app.yml * update workflows * update test trigger * add sdl2 dependencies for macos * update workflows
This commit is contained in:
18
.github/workflows/build-enjoy-app.yml
vendored
18
.github/workflows/build-enjoy-app.yml
vendored
@@ -1,18 +0,0 @@
|
||||
name: Build Enjoy App
|
||||
on: workflow_dispatch
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
os: [macos-11, macos-13, macos-latest, windows-latest, ubuntu-latest]
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20
|
||||
- name: install dependencies
|
||||
run: yarn install
|
||||
- name: build
|
||||
run: yarn make:enjoy
|
||||
7
.github/workflows/release-enjoy-app.yml
vendored
7
.github/workflows/release-enjoy-app.yml
vendored
@@ -6,7 +6,7 @@ jobs:
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
os: [macos-latest, windows-latest, ubuntu-latest]
|
||||
os: [macos-latest, macos-13-xlarge, windows-latest, ubuntu-latest]
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-node@v4
|
||||
@@ -18,8 +18,3 @@ jobs:
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.PUBLISH_TOKEN }}
|
||||
run: yarn publish:enjoy
|
||||
- if: matrix.os == 'macos-latest'
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.PUBLISH_TOKEN }}
|
||||
PACKAGE_OS_ARCH: arm64
|
||||
run: yarn run publish:enjoy --arch=arm64
|
||||
|
||||
41
.github/workflows/test-enjoy-app.yml
vendored
41
.github/workflows/test-enjoy-app.yml
vendored
@@ -1,34 +1,51 @@
|
||||
name: Test Enjoy App
|
||||
on: workflow_dispatch
|
||||
on:
|
||||
workflow_dispatch:
|
||||
pull_request_target:
|
||||
branches:
|
||||
- main
|
||||
paths:
|
||||
- "enjoy/**/*.ts"
|
||||
- "enjoy/**/*.tsx"
|
||||
- "enjoy/**/*.js"
|
||||
- "enjoy/**/*.mjs"
|
||||
jobs:
|
||||
test:
|
||||
timeout-minutes: 60
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os:
|
||||
[
|
||||
macos-11,
|
||||
macos-12,
|
||||
macos-13,
|
||||
macos-latest,
|
||||
macos-13,
|
||||
macos-13-xlarge,
|
||||
windows-2019,
|
||||
windows-latest,
|
||||
ubuntu-20.04,
|
||||
ubuntu-latest,
|
||||
]
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-node@v3
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20
|
||||
- name: Install dependencies
|
||||
run: npm install -g yarn && yarn
|
||||
- name: Install Playwright Browsers
|
||||
run: yarn workspace enjoy playwright install --with-deps
|
||||
- name: Package
|
||||
run: yarn package:enjoy
|
||||
- name: Run Playwright tests
|
||||
- if: matrix.os == 'macos-latest'
|
||||
name: Install sdl2 for macos
|
||||
run: |
|
||||
brew update
|
||||
brew install sdl2
|
||||
- if: matrix.os == 'ubuntu-latest'
|
||||
name: Run tests with xvfb-run on ubuntu
|
||||
run: |
|
||||
xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- yarn test:enjoy
|
||||
- if: matrix.os != 'ubuntu-latest'
|
||||
name: Run tests
|
||||
run: yarn test:enjoy
|
||||
- uses: actions/upload-artifact@v3
|
||||
- uses: actions/upload-artifact@v4
|
||||
if: always()
|
||||
with:
|
||||
name: playwright-report
|
||||
|
||||
10
README.md
10
README.md
@@ -19,6 +19,9 @@
|
||||
|
||||
# Enjoy App
|
||||
|
||||
[](https://github.com/xiaolai/everyone-can-use-english/actions/workflows/test-enjoy-app.yml)
|
||||
[](https://github.com/xiaolai/everyone-can-use-english/actions/workflows/release-enjoy-app.yml)
|
||||
|
||||
## \* 开发者
|
||||
|
||||
### 本地启动
|
||||
@@ -79,7 +82,7 @@ yarn make:enjoy
|
||||
yarn start:enjoy
|
||||
```
|
||||
|
||||
6. 以后重新启动用 Terminal
|
||||
6. 以后重新启动用 Terminal
|
||||
|
||||
```bash
|
||||
cd ~/github/everyone-can-use-english
|
||||
@@ -205,6 +208,7 @@ yarn make:enjoy
|
||||
|
||||
**Q: 很多解决不了的问题,怎么办?**
|
||||
|
||||
其实,可能还有很多其它问题,比如,本软件安装、OpenAI(注册、支付)、美国线路……
|
||||
其实,可能还有很多其它问题,比如,本软件安装、OpenAI(注册、支付)、美国线路……
|
||||
|
||||
> A: 1)文本生成,可以暂时用各种翻译工具,比如 Google Translate,或者其它的替代方案;2)语音生成,可以暂时用开源免费的 [Edge-TTS-record](https://github.com/LuckyHookin/edge-TTS-record)
|
||||
|
||||
> A: 1)文本生成,可以暂时用各种翻译工具,比如 Google Translate,或者其它的替代方案;2)语音生成,可以暂时用开源免费的 [Edge-TTS-record](https://github.com/LuckyHookin/edge-TTS-record)
|
||||
@@ -9,6 +9,8 @@ import {
|
||||
ipcRendererInvoke,
|
||||
} from "electron-playwright-helpers";
|
||||
import { ElectronApplication, Page, _electron as electron } from "playwright";
|
||||
import path from "path";
|
||||
import fs from "fs-extra";
|
||||
|
||||
declare global {
|
||||
interface Window {
|
||||
@@ -25,6 +27,13 @@ test.beforeAll(async () => {
|
||||
const appInfo = parseElectronApp(latestBuild);
|
||||
// set the CI environment variable to true
|
||||
process.env.CI = "e2e";
|
||||
|
||||
const resultDir = path.join(process.cwd(), "test-results");
|
||||
|
||||
fs.ensureDirSync(resultDir);
|
||||
process.env.SETTINGS_PATH = resultDir;
|
||||
process.env.LIBRARY_PATH = resultDir;
|
||||
|
||||
electronApp = await electron.launch({
|
||||
args: [appInfo.main],
|
||||
executablePath: appInfo.executable,
|
||||
@@ -61,6 +70,7 @@ test("validate whisper command", async () => {
|
||||
const res = await page.evaluate(() => {
|
||||
return window.__ENJOY_APP__.whisper.check();
|
||||
});
|
||||
console.info(res.log);
|
||||
expect(res.success).toBeTruthy();
|
||||
});
|
||||
|
||||
|
||||
@@ -6,6 +6,13 @@ import fs from "fs-extra";
|
||||
import log from "electron-log";
|
||||
import * as i18n from "i18next";
|
||||
|
||||
if (process.env.SETTINGS_PATH) {
|
||||
settings.configure({
|
||||
dir: process.env.SETTINGS_PATH,
|
||||
prettify: true,
|
||||
});
|
||||
}
|
||||
|
||||
const logger = log.scope("settings");
|
||||
const language = () => {
|
||||
const _language = settings.getSync("language");
|
||||
@@ -28,7 +35,8 @@ const libraryPath = () => {
|
||||
if (!_library || typeof _library !== "string") {
|
||||
settings.setSync(
|
||||
"library",
|
||||
path.join(app.getPath("documents"), LIBRARY_PATH_SUFFIX)
|
||||
process.env.LIBRARY_PATH ||
|
||||
path.join(app.getPath("documents"), LIBRARY_PATH_SUFFIX)
|
||||
);
|
||||
} else if (path.parse(_library).base !== LIBRARY_PATH_SUFFIX) {
|
||||
settings.setSync("library", path.join(_library, LIBRARY_PATH_SUFFIX));
|
||||
|
||||
@@ -46,16 +46,23 @@ class Whipser {
|
||||
}
|
||||
|
||||
async initialize() {
|
||||
const bundleModels = fs.readdirSync(this.bundledModelsDir);
|
||||
const models = [];
|
||||
|
||||
const bundledModels = fs.readdirSync(this.bundledModelsDir);
|
||||
for (const file of bundledModels) {
|
||||
const model = WHISPER_MODELS_OPTIONS.find((m) => m.name == file);
|
||||
if (!model) continue;
|
||||
|
||||
models.push({
|
||||
...model,
|
||||
savePath: path.join(this.bundledModelsDir, file),
|
||||
});
|
||||
}
|
||||
|
||||
const dir = path.join(settings.libraryPath(), "whisper", "models");
|
||||
fs.ensureDirSync(dir);
|
||||
const files = fs.readdirSync(dir);
|
||||
|
||||
const availableModelFiles = bundleModels.concat(files);
|
||||
|
||||
const models = [];
|
||||
for (const file of availableModelFiles) {
|
||||
for (const file of files) {
|
||||
const model = WHISPER_MODELS_OPTIONS.find((m) => m.name == file);
|
||||
if (!model) continue;
|
||||
|
||||
@@ -106,6 +113,7 @@ class Whipser {
|
||||
await this.initialize();
|
||||
|
||||
const model = this.currentModel();
|
||||
logger.debug(`Checking whisper model: ${model}`);
|
||||
|
||||
const sampleFile = path.join(__dirname, "samples", "jfk.wav");
|
||||
const tmpDir = settings.cachePath();
|
||||
|
||||
Reference in New Issue
Block a user