queryhub
TypeScript icon, indicating that this package has built-in type declarations

0.1.0 • Public • Published

QueryHub

Records your GraphQL queries and replays them during consequent test runs

Benefits

  • Fast tests
  • Deterministic responses

Use cases

  • [x] End to end testing with single page apps using Playwright
  • [ ] Mock server side requests
    • NextJS apps
    • NodeJS APIs

Usage

Call await queryHub({ page, name: 'products', url: /graphcms.com/ }) with the GraphQL API URL you want to record/replay, a Playwright page object and the name of the file that will store the mocks. QueryHub will store all queries against that endpoint. On subsequent test runs, it will return the mocked values instead of hitting that API.

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

let hub;

test.beforeEach(async ({ page }) => {
  hub = await queryHub({ page, name: 'products', url: /graphcms.com/ });
});

test.afterEach(async () => {
  await hub.stop();
});

test('lists products', async ({ page }) => {
  await page.goto('http://localhost:3000', { waitUntil: 'networkidle' });
  const textContent = await page.innerText('ul');

  expect(textContent).toContain('Long Sleeve Tee 2');
  expect(textContent).toContain('Short Sleeve Tee');
  expect(textContent).toContain('Cap');
});

References

Package Sidebar

Install

npm i queryhub

Weekly Downloads

0

Version

0.1.0

License

MIT

Unpacked Size

223 kB

Total Files

12

Last publish

Collaborators

  • eljuli