Back to Repositories

Testing Bundling and Integration Capabilities in Insomnia

This test suite validates critical bundling functionality in Insomnia, focusing on node-libcurl integration, HTTP snippet generation, and external module support in scripts. It ensures core API request handling and script execution capabilities work as expected.

Test Coverage Overview

The test suite covers essential bundling and integration features of Insomnia.

Key areas tested include:
  • node-libcurl functionality for HTTP requests
  • HTTP snippet generation and clipboard operations
  • External module integration in pre-request scripts
  • Response handling and status verification
  • UI interaction flows for import/export operations

Implementation Analysis

The tests utilize Playwright’s powerful testing framework for end-to-end validation. The implementation employs fixture loading, clipboard manipulation, and UI interaction simulation to verify Insomnia’s core functionality.

Technical patterns include:
  • Async/await pattern for handling asynchronous operations
  • Page object model for UI element interaction
  • Fixture-based test data management
  • Component-level locator strategies

Technical Details

Testing tools and configuration:
  • Playwright test runner and assertion library
  • Custom fixture loading utilities
  • Data-testid selectors for reliable element location
  • YAML fixtures for test data
  • Clipboard API integration
  • CodeMirror editor interaction handling

Best Practices Demonstrated

The test suite exemplifies high-quality testing practices through systematic validation of core functionality.

Notable practices include:
  • Isolated test scenarios with clear arrangements
  • Robust element selection strategies
  • Explicit wait conditions for UI state changes
  • Comprehensive assertion coverage
  • Modular test organization
  • Reusable fixture patterns

kong/insomnia

packages/insomnia-smoke-test/tests/critical/bundling.test.ts

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

import { loadFixture } from '../../playwright/paths';
import { test } from '../../playwright/test';

test('can use node-libcurl, httpsnippet, hidden browser window', async ({ app, page }) => {
  const statusTag = page.locator('[data-testid="response-status-tag"]:visible');
  const responseBody = page.locator('[data-testid="CodeEditor"]:visible', {
    has: page.locator('.CodeMirror-activeline'),
  });

  const text = await loadFixture('smoke-test-collection.yaml');
  await app.evaluate(async ({ clipboard }, text) => clipboard.writeText(text), text);

  await page.getByLabel('Import').click();
  await page.locator('[data-test-id="import-from-clipboard"]').click();
  await page.getByRole('button', { name: 'Scan' }).click();
  await page.getByRole('dialog').getByRole('button', { name: 'Import' }).click();
  await page.getByLabel('Smoke tests').click();

  await page.getByLabel('Request Collection').getByTestId('send JSON request').press('Enter');
  await page.getByTestId('request-pane').getByRole('button', { name: 'Send' }).click();
  await expect(statusTag).toContainText('200 OK');
  await expect(responseBody).toContainText('"id": "1"');
  await page.getByRole('button', { name: 'Preview' }).click();
  await page.getByRole('menuitem', { name: 'Raw Data' }).click();
  await expect(responseBody).toContainText('{"id":"1"}');
  await page.getByLabel('Request Collection').getByTestId('send JSON request').press('Enter');
  await page.getByLabel('Request Collection').getByTestId('send JSON request').getByLabel('Request Actions').click();
  await page.getByRole('menuitemradio', { name: 'Generate Code' }).click();
  await page.getByText('curl --request GET \\').click();
  await page.getByRole('button', { name: 'Done' }).click();

  await page.getByLabel('Request Collection').getByTestId('sends request with pre-request script').press('Enter');
  await page.getByTestId('request-pane').getByRole('button', { name: 'Send' }).click();
  await expect(statusTag).toContainText('200 OK');
  await page.getByRole('tab', { name: 'Console' }).click();
});

test('can use external modules in scripts ', async ({ app, page }) => {
  const text = await loadFixture('pre-request-collection.yaml');

  // import collection
  await app.evaluate(async ({ clipboard }, text) => clipboard.writeText(text), text);
  await page.getByLabel('Import').click();
  await page.locator('[data-test-id="import-from-clipboard"]').click();
  await page.getByRole('button', { name: 'Scan' }).click();
  await page.getByRole('dialog').getByRole('button', { name: 'Import' }).click();

  // select request
  await page.getByLabel('Pre-request Scripts').click();
  await page.getByLabel('Request Collection').getByTestId('use external modules').press('Enter');

  // send
  await page.getByTestId('request-pane').getByRole('button', { name: 'Send' }).click();

  // verify
  const statusTag = page.locator('[data-testid="response-status-tag"]:visible');
  await expect(statusTag).toContainText('200 OK');
});