Playwright

There is no official plugin. Use fetch or Playwright's request API, wait up to 180 seconds, then delete the inbox so quota is released.

import { test, expect } from '@playwright/test';

test('reads the signup verification email', async ({ request }) => {
  const key = process.env.INBOXRHINO_API_KEY!;
  const created = await request.post('https://api.inboxrhino.in/v1/inboxes', {
    headers: { Authorization: `Bearer ${key}` },
  });
  const inbox = await created.json();

  // Trigger the app under test to send mail to inbox.data.address

  const mail = await request.get(
    `https://api.inboxrhino.in/v1/inboxes/${inbox.data.id}/messages?wait_seconds=180&limit=1&include=content&subject=Verify`,
    { headers: { Authorization: `Bearer ${key}` } },
  );
  expect(mail.ok()).toBeTruthy();
  const body = await mail.json();
  expect(body.data[0].subject).toMatch(/verify/i);

  await request.delete(`https://api.inboxrhino.in/v1/inboxes/${inbox.data.id}`, {
    headers: { Authorization: `Bearer ${key}` },
  });
});

Store INBOXRHINO_API_KEY as a CI secret. Use received_after if a previous matching email could still be in the inbox.