How to Integrate Argos for Visual Testing with Vercel Preview: A Comprehensive Guide
Argos now offers a smooth integration with Vercel Preview for visual testing, enabling users to effectively identify visual regressions in an environment that closely simulates production. This guide provides a detailed walkthrough on configuring Argos on Vercel Preview through GitHub Actions, including shared source code for straightforward replication.
The Benefits of Visual Testing with Vercel Preview
- 
Cost Efficiency in CI: Eliminate the need for duplicate application builds, saving time and resources. 
- 
Enhanced Test Reliability: Run visual tests in an environment that mirrors production, ensuring consistency and accuracy. 
Important Note: This strategy is most effective for idempotent tests that can be executed repeatedly without altering the environment. Tests involving significant modifications, like user deletions, might not be compatible.
Prerequisites
- Setup Playwright on your project. For a Next.js application, follow this guide.
- Deploy your project on Vercel.
Setup Argos in my project
1. Import your project in Argos
Sign up to Argos and import your project. Save the ARGOS_TOKEN for later.

2. Install Argos Playwright SDK
npm install --save-dev @argos-ci/playwright
3. Update your Playwright config
Argos integrates with Playwright using a custom reporter. To upload your screenshots to Argos when Playwright tests run, add @argos-ci/playwright/reporter in your playwright.config.ts file:
import { defineConfig } from "@playwright/test";
export default defineConfig({
  // ... other configuration
  reporter: [
    // Use "dot" reporter on CI, "list" otherwise (Playwright default).
    process.env.CI ? ["dot"] : ["list"],
    // Add Argos reporter.
    [
      "@argos-ci/playwright/reporter",
      {
        // Upload to Argos on CI only.
        uploadToArgos: !!process.env.CI,
        // Set your Argos token.
        token: "<YOUR-ARGOS-TOKEN>",
      },
    ],
  ],
  use: {
    // On CI, we will set `BASE_URL` from Vercel preview URL
    baseURL: process.env.CI ? process.env.BASE_URL : "http://localhost:3000",
  },
  extraHTTPHeaders: {
    // Hide Vercel Toolbar in tests
    "x-vercel-skip-toolbar": "0",
  },
});
4. Take screenshots of your app
The Screenshot pages script from Argos's documentation was utilized for capturing the application's homepage, offering flexibility to include additional pages in the future.
import { argosScreenshot } from "@argos-ci/playwright";
import { test } from "@playwright/test";
const pages = [
  { name: "homepage", path: "/" },
  // Add other pages if needed
];
for (const { name, path } of pages) {
  test(`run Argos on ${name} (${path})`, async ({ page }) => {
    await page.goto(path);
    await argosScreenshot(page, name);
  });
}
Run Argos on Vercel Preview
To initiate tests on Vercel Preview, the workflow will respond to the deployment_status event, triggering the test workflow upon a Vercel deployment notification.
Note: Alternative approaches, such as the Await for Vercel Deployment action, can be utilized to retrieve the Vercel deployment URL for testing purposes.
Below is an example of a workflow file designed to execute tests on a Vercel deployment:
# .github/workflows/test-preview.yml
name: Playwright + Argos Tests
on:
  # Trigger on deployment event
  deployment_status:
jobs:
  test:
    # Run tests only if the deployment is successful
    if: github.event_name == 'deployment_status' && github.event.deployment_status.state == 'success'
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
      - name: Install dependencies
        run: npm ci
      - name: Run Playwright tests
        uses: docker://mcr.microsoft.com/playwright:v1.42.1-jammy
        run: npm exec -- playwright test
        env:
          # Set the GITHUB_TOKEN, Argos will use it to retrieve
          # informations about your deployment
          # Read more about GITHUB_TOKEN here: https://docs.github.com/en/actions/security-guides/automatic-token-authentication
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          # Set `BASE_URL` with Vercel Preview URL
          BASE_URL: ${{ github.event.deployment_status.environment_url }}
          # If the test runs on the production deployment, use "main" as branch
          # Here's "main" must be the reference branch set up in Argos
          ARGOS_BRANCH: ${{ github.event.deployment_status.environment == 'Production' && 'main' || '' }}
For a comprehensive explanation of each step involved, refer to the Argos Preview Deployment Guide.
Upon completion, you will receive status checks on GitHub:

Project Source Code
Explore the GitHub repository for the source code of this integration:
Conclusion
Vercel Preview and Argos form a powerful duo in web development. Vercel Preview allows hands-on, manual verification of your web applications in real environments. Argos leverage automated visual regression testing, catching any discrepancies across devices and browsers. This combination, they make a great team, giving developers the peace of mind that their sites are both functionally robust and beautifully across all screens.


