90 lines
2.3 KiB
Markdown
90 lines
2.3 KiB
Markdown
|
|
# Playwright Lösung für fehlende Abhängigkeiten
|
||
|
|
|
||
|
|
## Problem
|
||
|
|
Der Integrationstest schlägt fehl mit folgendem Fehler:
|
||
|
|
```
|
||
|
|
Error: browserType.launch: Target page, context or browser has been closed
|
||
|
|
Browser logs:
|
||
|
|
[...]
|
||
|
|
/home/openclaw/.cache/ms-playwright/chromium_headless_shell-1208/chrome-headless-shell-linux64/chrome-headless-shell: error while loading shared libraries: libatk-1.0.so.0: cannot open shared object file: No such file or directory
|
||
|
|
```
|
||
|
|
|
||
|
|
## Ursache
|
||
|
|
Die benötigte Bibliothek `libatk-1.0.so.0` ist nicht installiert.
|
||
|
|
|
||
|
|
## Lösung
|
||
|
|
Da wir keine Root-Rechte haben, um die Bibliothek zu installieren, verwenden wir eine alternative Konfiguration:
|
||
|
|
|
||
|
|
1. Verwenden von `--no-sandbox` und `--disable-dev-shm-usage` Flags für Chromium
|
||
|
|
2. Anpassung der Playwright-Konfiguration zur besseren Kompatibilität
|
||
|
|
|
||
|
|
## Implementierte Änderungen
|
||
|
|
Die folgende Konfiguration wurde in `playwright.config.mjs` implementiert:
|
||
|
|
|
||
|
|
```javascript
|
||
|
|
import { defineConfig, devices } from '@playwright/test';
|
||
|
|
|
||
|
|
export default defineConfig({
|
||
|
|
testDir: './tests',
|
||
|
|
timeout: 30000,
|
||
|
|
expect: {
|
||
|
|
timeout: 5000
|
||
|
|
},
|
||
|
|
fullyParallel: true,
|
||
|
|
forbidOnly: !!process.env.CI,
|
||
|
|
retries: process.env.CI ? 2 : 0,
|
||
|
|
workers: process.env.CI ? 1 : undefined,
|
||
|
|
reporter: 'html',
|
||
|
|
use: {
|
||
|
|
actionTimeout: 0,
|
||
|
|
baseURL: 'http://localhost:3000',
|
||
|
|
trace: 'on-first-retry',
|
||
|
|
headless: true,
|
||
|
|
viewport: { width: 1280, height: 720 },
|
||
|
|
// Hinzugefügte Optionen zur Verbesserung der Kompatibilität
|
||
|
|
launchOptions: {
|
||
|
|
args: [
|
||
|
|
'--no-sandbox',
|
||
|
|
'--disable-dev-shm-usage',
|
||
|
|
'--disable-gpu',
|
||
|
|
'--disable-web-security'
|
||
|
|
]
|
||
|
|
}
|
||
|
|
},
|
||
|
|
projects: [
|
||
|
|
{
|
||
|
|
name: 'chromium',
|
||
|
|
use: {
|
||
|
|
...devices['Desktop Chrome'],
|
||
|
|
headless: true,
|
||
|
|
channel: 'chrome',
|
||
|
|
launchOptions: {
|
||
|
|
args: [
|
||
|
|
'--no-sandbox',
|
||
|
|
'--disable-dev-shm-usage',
|
||
|
|
'--disable-gpu',
|
||
|
|
'--disable-web-security'
|
||
|
|
]
|
||
|
|
}
|
||
|
|
},
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: 'firefox',
|
||
|
|
use: {
|
||
|
|
...devices['Desktop Firefox'],
|
||
|
|
headless: true,
|
||
|
|
},
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: 'webkit',
|
||
|
|
use: {
|
||
|
|
...devices['Desktop Safari'],
|
||
|
|
headless: true,
|
||
|
|
},
|
||
|
|
},
|
||
|
|
],
|
||
|
|
});
|
||
|
|
```
|
||
|
|
|
||
|
|
## Testergebnis
|
||
|
|
Nach dieser Änderung sollten die Integrationstests erfolgreich durchlaufen.
|