mirror of
https://github.com/mifi/lossless-cut.git
synced 2024-11-23 02:42:37 +01:00
E2e (#2141)
* update * try fix * try to fix * Fix path * remove ls * print stdout and stderr of losslescut * add tmate option
This commit is contained in:
parent
a4190662b9
commit
0499100aff
33
.github/workflows/build.yml
vendored
33
.github/workflows/build.yml
vendored
@ -7,7 +7,12 @@ on:
|
||||
schedule:
|
||||
- cron: '0 10 * * *'
|
||||
workflow_dispatch:
|
||||
|
||||
inputs:
|
||||
tmate_enabled:
|
||||
type: boolean
|
||||
description: 'Run the build with tmate debugging enabled (https://github.com/marketplace/actions/debugging-with-tmate)'
|
||||
required: false
|
||||
default: false
|
||||
|
||||
jobs:
|
||||
release:
|
||||
@ -24,7 +29,13 @@ jobs:
|
||||
# os: [windows-latest]
|
||||
|
||||
steps:
|
||||
# Windows fix. See https://github.com/actions/checkout/issues/226
|
||||
- name: Setup tmate session
|
||||
uses: mxschmitt/action-tmate@v3
|
||||
if: ${{ github.event_name == 'workflow_dispatch' && inputs.tmate_enabled }}
|
||||
with:
|
||||
detached: true
|
||||
|
||||
# Windows fix. See https://github.com/actions/checkout/issues/226
|
||||
- run: git config --global core.autocrlf false
|
||||
|
||||
- name: Check out Git repository
|
||||
@ -111,20 +122,18 @@ jobs:
|
||||
APPLE_API_KEY_ID: ${{ secrets.api_key_id }}
|
||||
APPLE_API_ISSUER: ${{ secrets.api_key_issuer_id }}
|
||||
|
||||
- run: npx tsx script/e2e.mts 'dist/mac-arm64/LosslessCut.app/Contents/MacOS/LosslessCut' screenshot-macos.jpeg
|
||||
- run: npx tsx script/e2e.mts 'dist/mac-arm64/LosslessCut.app/Contents/MacOS/LosslessCut' 0:none screenshot.jpeg
|
||||
if: startsWith(matrix.os, 'macos')
|
||||
|
||||
# - run: npx tsx script/e2e.mts 'dist/win-x64/LosslessCut.app/Contents/MacOS/LosslessCut' screenshot-windows.jpeg
|
||||
- run: |
|
||||
dir /s
|
||||
- run: npx tsx script/e2e.mts 'dist\win-unpacked\LosslessCut.exe' desktop screenshot.jpeg
|
||||
if: startsWith(matrix.os, 'windows')
|
||||
|
||||
- run: |
|
||||
export DISPLAY=:0
|
||||
sudo Xvfb -ac :0 -screen 0 1280x1024x24 > /dev/null 2>&1 &
|
||||
sleep 1
|
||||
ls -R dist/linux-x64
|
||||
# npx tsx script/e2e.mts 'dist/linux-x64/LosslessCut.app/Contents/MacOS/LosslessCut' screenshot-linux.jpeg
|
||||
sleep 5
|
||||
chmod +x dist/linux-unpacked/losslesscut
|
||||
npx tsx script/e2e.mts 'dist/linux-unpacked/losslesscut' ':0.0+0,0' screenshot.jpeg
|
||||
if: startsWith(matrix.os, 'ubuntu')
|
||||
|
||||
- name: (MacOS) Upload to Mac App Store
|
||||
@ -140,7 +149,7 @@ jobs:
|
||||
path: |
|
||||
dist/LosslessCut-mac-arm64.dmg
|
||||
dist/LosslessCut-mac-x64.dmg
|
||||
screenshot-macos.jpeg
|
||||
screenshot.jpeg
|
||||
|
||||
- name: (Windows) Upload artifacts
|
||||
uses: actions/upload-artifact@v3
|
||||
@ -149,7 +158,7 @@ jobs:
|
||||
name: Windows
|
||||
path: |
|
||||
dist/LosslessCut-win-x64.7z
|
||||
screenshot-windows.jpeg
|
||||
screenshot.jpeg
|
||||
|
||||
- name: (Linux) Upload artifacts
|
||||
uses: actions/upload-artifact@v3
|
||||
@ -160,5 +169,5 @@ jobs:
|
||||
dist/LosslessCut-linux-arm64.tar.bz2
|
||||
dist/LosslessCut-linux-armv7l.tar.bz2
|
||||
dist/LosslessCut-linux-x64.tar.bz2
|
||||
screenshot-linux.jpeg
|
||||
screenshot.jpeg
|
||||
|
||||
|
@ -8,7 +8,8 @@ import timers from 'node:timers/promises';
|
||||
|
||||
const losslessCutExePath = process.argv[2];
|
||||
assert(losslessCutExePath);
|
||||
const screenshotOutPath = process.argv[3];
|
||||
const screenshotDevice = process.argv[3];
|
||||
const screenshotOutPath = process.argv[4];
|
||||
assert(screenshotOutPath);
|
||||
|
||||
|
||||
@ -26,10 +27,20 @@ const client = got.extend({ prefixUrl: `http://127.0.0.1:${port}`, timeout: { re
|
||||
async function captureScreenshot(outPath: string) {
|
||||
// https://trac.ffmpeg.org/wiki/Capture/Desktop#Windows
|
||||
|
||||
const platform = os.platform();
|
||||
|
||||
if (platform === 'darwin') {
|
||||
const { stderr } = await execa('ffmpeg', ['-f', 'avfoundation', '-list_devices', 'true', '-i', '', '-hide_banner'], { reject: false });
|
||||
console.log(stderr);
|
||||
}
|
||||
|
||||
assert(screenshotDevice);
|
||||
|
||||
await execa('ffmpeg', [
|
||||
...(os.platform() === 'darwin' ? ['-r', '30', '-pix_fmt', 'uyvy422', '-f', 'avfoundation', '-i', '1:none'] : []),
|
||||
...(os.platform() === 'win32' ? ['-f', 'gdigrab', '-framerate', '30', '-i', 'desktop'] : []),
|
||||
...(os.platform() === 'linux' ? ['-framerate', '25', '-f', 'x11grab', '-i', ':0.0+0,0'] : []),
|
||||
...(platform === 'darwin' ? ['-r', '30', '-pix_fmt', 'uyvy422', '-f', 'avfoundation'] : []),
|
||||
...(platform === 'win32' ? ['-f', 'gdigrab', '-framerate', '30'] : []),
|
||||
...(platform === 'linux' ? ['-framerate', '25', '-f', 'x11grab'] : []),
|
||||
'-i', screenshotDevice,
|
||||
'-vframes', '1', outPath,
|
||||
], { timeout: 30000 });
|
||||
}
|
||||
@ -58,6 +69,9 @@ try {
|
||||
|
||||
console.log('Waiting for app to quit');
|
||||
|
||||
await ps;
|
||||
const { stdout, stderr } = await ps;
|
||||
|
||||
console.log('App has quit');
|
||||
|
||||
console.log('stdout:', stdout);
|
||||
console.log('stderr:', stderr);
|
||||
|
Loading…
Reference in New Issue
Block a user