Playwright Setup in API Maker Sandbox
This blog describes the procedure to install and use Playwright within the API Maker Sandbox Environment.
Overview
Playwright can be used inside the API Maker sandbox to perform browser-based automation such as:
- Page navigation
- PDF generation
- Web scraping
- Headless browser execution
System Requirements
Ensure the API Maker environment meets the following minimum requirements:
- Memory: 2 GB RAM
- Storage: 40 GB disk space
Step 1: Override the Default Sandbox Docker Image
Playwright requires system-level dependencies that are not present in the default sandbox image. To install them, the sandbox Dockerfile must be overridden.
Instructions
- Navigate to API Maker -> Sandbox Settings
- Locate the Dockerfile configuration section
- Replace the existing content with the following Dockerfile
FROM node:22-bookworm
WORKDIR /usr/src/app
RUN npm install -g [email protected]
RUN apt-get update && apt-get install -y --no-install-recommends build-essential g++ make libc6 python3 python3-dev && rm -rf /var/lib/apt/lists/*
ARG A_DOCKERFILE_HASH
ENV A_DOCKERFILE_HASH=${A_DOCKERFILE_HASH}
ARG A_PACKAGE_JSON_HASH
ENV A_PACKAGE_JSON_HASH=${A_PACKAGE_JSON_HASH}
COPY ./package.json ./
RUN pnpm install --dangerously-allow-all-builds
RUN npx -y [email protected] install --with-deps
ARG A_CODE_HASH
ENV A_CODE_HASH=${A_CODE_HASH}
ARG NODE_OPTIONS
ENV NODE_OPTIONS=${NODE_OPTIONS}
COPY . .
ARG A_NEW_PACKAGES_INSTALL_CMD
ENV A_NEW_PACKAGES_INSTALL_CMD=${A_NEW_PACKAGES_INSTALL_CMD}
RUN $A_NEW_PACKAGES_INSTALL_CMD
EXPOSE 4631
EXPOSE 4632
EXPOSE 9229
CMD [ "npm", "run", "start" ]
- Save the Dockerfile using the Save button in the top-right corner
This image installs:
- Required system libraries for Chromium
- Playwright browser binaries
- pnpm for dependency management
Step 2: Add Playwright as a Sandbox Dependency
In addition to the Docker image, Playwright must be added as a sandbox dependency.
Instructions
- Open the Sandbox Dependencies section
- Click the Add (+) button
- Search for playwright
- Select the latest available stable version
- Click Add to confirm
After this step, Playwright is available for use within sandbox code.
Usage Example
The following example demonstrates how to:
- Launch Chromium in sandbox-safe mode
- Navigate to a public website
- Generate a PDF file
- Return the file as a downloadable response
import * as T from 'types';
const fs = require('fs');
const path = require('path');
const { chromium } = require('playwright');
async function main(g: T.IAMGlobal) {
try {
const outDir = path.join(__dirname, 'uploads');
if (!fs.existsSync(outDir)) fs.mkdirSync(outDir, { recursive: true });
const browser = await chromium.launch({
args: ['--no-sandbox', '--disable-setuid-sandbox'],
headless: true,
});
const page = await browser.newPage();
console.log('Navigating to https://playwright.dev ...');
await page.goto('https://playwright.dev', { waitUntil: 'networkidle' });
const filename = path.join(outDir, 'playwright-dev.pdf');
console.log('Generating PDF to', filename);
await page.pdf({ path: filename, format: 'A4' });
await browser.close();
console.log('PDF generated:', filename);
return {
__am__downloadFilePath: path.basename(filename),
__am__downloadFolderFileName: path.basename(filename)
}
} catch (err) {
console.error('Error generating PDF:', err);
}
};
module.exports = main;
Notes and Best Practices
- Always launch Chromium with
--no-sandboxflags inside sandbox environments - Ensure sufficient disk space for Playwright browser binaries
- Avoid running multiple concurrent browser instances unless memory is sufficient
Summary
By overriding the sandbox Docker image and installing Playwright as a dependency, API Maker can reliably execute Playwright-based automation tasks. This setup enables advanced browser workflows while maintaining sandbox isolation and security.