Skip to content

Commit

Permalink
Test: fix e2e tests (#318)
Browse files Browse the repository at this point in the history
* 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
  • Loading branch information
an-lee authored Feb 18, 2024
1 parent fdc3c80 commit 0131d5a
Show file tree
Hide file tree
Showing 7 changed files with 70 additions and 46 deletions.
18 changes: 0 additions & 18 deletions .github/workflows/build-enjoy-app.yml

This file was deleted.

7 changes: 1 addition & 6 deletions .github/workflows/release-enjoy-app.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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 changes: 29 additions & 12 deletions .github/workflows/test-enjoy-app.yml
Original file line number Diff line number Diff line change
@@ -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
Expand Down
10 changes: 7 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@

# Enjoy App

[![Test](https://github.com/xiaolai/everyone-can-use-english/actions/workflows/test-enjoy-app.yml/badge.svg)](https://github.com/xiaolai/everyone-can-use-english/actions/workflows/test-enjoy-app.yml)
[![Release](https://github.com/xiaolai/everyone-can-use-english/actions/workflows/release-enjoy-app.yml/badge.svg)](https://github.com/xiaolai/everyone-can-use-english/actions/workflows/release-enjoy-app.yml)

## \* 开发者

### 本地启动
Expand Down Expand Up @@ -79,7 +82,7 @@ yarn make:enjoy
yarn start:enjoy
```

6. 以后重新启动用 Terminal
6. 以后重新启动用 Terminal

```bash
cd ~/github/everyone-can-use-english
Expand Down Expand Up @@ -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)
10 changes: 10 additions & 0 deletions enjoy/e2e/main.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -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,
Expand Down Expand Up @@ -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();
});

Expand Down
10 changes: 9 additions & 1 deletion enjoy/src/main/settings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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");
Expand All @@ -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));
Expand Down
20 changes: 14 additions & 6 deletions enjoy/src/main/whisper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -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();
Expand Down

0 comments on commit 0131d5a

Please sign in to comment.