← Back to docs

Browser Automation

Language: SV | EN | SV

Browser Automation

Browser Automation är en ny admin-only-funktion i Tools för att lagra och köra browserscript direkt från Tools.

Varför Playwright och inte TestCafe?

För just den här Tools-integrationen är Playwright bättre lämpat eftersom det är enklare att anropa från Laravel/PHP, fungerar väl med Chrome/Chromium/Edge, stöder persistenta browserprofiler och ger ren screenshot-/artefakthantering.

Det gör det till en mer praktisk grund för inloggningstunga sajter som Facebook än att lägga in en större fristående TestCafe-projektstruktur i Tools.

Vad funktionen kan göra

Nuvarande implementation stöder:

  • lagrade browserscript i databasen
  • körning via Chrome / Chromium / Microsoft Edge
  • valfria persistenta profilkataloger för att återanvända inloggade sessioner
  • valfri headed eller headless körning
  • screenshots, JSON-dumpar och textartefakter under storage/app/browser-automation/
  • direkt Run now från Tools admin
  • CLI-körning via Artisan
  • cronvänlig schemalagd körning via det befintliga DB-baserade jobbflödet

Var det administreras

Tools admin:

  • /admin/browser-automation

Där kan du:

  1. skapa scriptnyckel och namn
  2. välja browser, start-URL, timeout och valfri persistent profilkatalog
  3. lagra JSON-input som skickas till scriptet
  4. klistra in själva Playwright-scriptkroppen
  5. köra scriptet direkt och se senaste output/artefaktkatalog

Create/edit-sidan är nu också upplagd som ett mer guidat adminformulär:

  • en tydligare runtime-/setupsektion för nyckel, browser, profil, timeout och flaggor
  • en separat kodsektion för input-JSON och scriptkälla
  • en inbyggd snabbtest-checklista i sidokolumnen
  • ett färdigt smoke-test-script som öppnar https://example.com, loggar titeln, sparar en screenshot och returnerar strukturerad output

Serverkrav för runtime

Playwright-runnern ligger under automation/playwright och behöver sin Node-dependency installerad på servern:

cd automation/playwright
npm install

Om Chrome / Chromium / Edge inte hittas automatiskt på värden kan du sätta motsvarande server-env, till exempel BROWSER_AUTOMATION_CHROME_PATH.

Runtime-kontrakt för script

Det lagrade scriptet körs inne i en async-funktion och får tillgång till:

  • page
  • context
  • browser
  • playwright
  • helpers
  • input

Nyttiga helpers är bland annat:

  • helpers.log(...parts)
  • await helpers.screenshot('shot.png')
  • await helpers.saveText('note.txt', '...')
  • await helpers.saveJson('state.json', value)
  • helpers.setOutput(value)
  • await helpers.delay(ms)
  • helpers.getEnv('NAME')

CLI och cron

Kör ett lagrat script direkt:

php artisan browser-automation:run facebook-post

Schemalägg via DB-baserade jobb:

  • handler: App\Jobs\Handlers\BrowserAutomationScheduledJobHandler
  • jobbnyckel: browser_automation.run:facebook-post

Den vanliga Laravel-schedulern kör nu också jobs:run varje minut, så browserautomation kan köras automatiskt via en vanlig schedule:run-cron.

Snabbt första test

Om du vill verifiera att browserautomation verkligen fungerar innan du försöker med Facebook eller andra interaktiva sajter:

  1. öppna /admin/browser-automation/create
  2. använd en enkel nyckel som example-home
  3. låt browser vara chrome eller chromium
  4. sätt start_url (eller input.url) till https://example.com
  5. behåll det förifyllda exempelscriptet eller klistra in detta:
await page.goto(input.url || 'https://example.com', { waitUntil: 'domcontentloaded' });
helpers.log('Loaded page', await page.title());
await helpers.screenshot('example-home.png');
return {
  title: await page.title(),
  url: page.url(),
};
  1. spara scriptet
  2. klicka på Run now
  3. verifiera att:
    • senaste status blir ok
    • output visar sidans titel/URL
    • artefaktkatalogen innehåller en screenshot som example-home.png

Facebook-notis

Om du vill automatisera flöden på Facebook eller liknande sajter:

  • använd en persistent profile directory så browsern kan återanvända sin inloggade session
  • använd headed mode när du först loggar in eller när interaktiva challenges kan förekomma
  • räkna med att målplattformen ändå kan utmana, blockera eller begränsa automation

Se alltid till att användningen följer målplattformens egna regler och din egen säkerhets-/driftpolicy.