2.0.0 • Published 2 years ago

testcafe-global-network-request-logger v2.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

Global Network Request Logger for Testcafe

Global Hook for testcafe that will record and save network communication (request/response) with external services to JSON file

Build Status

Uses TestCafe global hooks to record network calls executed in browser and saves them into file using same format as screenshots/videos. It is meant to be used in CI, together with screenshot & video recording for better troubleshooting capability of failed tests

Features

  • zero dependencies
  • supports gzipped or JSON responses
  • once attached will execute for all tests
  • uses similar config as testcafe screenshot and video for path and recording customization
  • adds additional param that can be used to limit number of logged requests (usually only last few requests matter)
  • supports quarantine mode and parallel test execution

Note

Only intercepts cross domain requests to avoid recording locally requested resources like HTML, CSS or JS.

Prerequisite

In order to use global hooks, TestCafe Javascript configuration file must be used.

Install

npm install testcafe-global-network-request-logger

Configuration

Once installed add network configuration in .testcaferc.js file

module.exports = {
  // some other config
  network: {
    path: 'tmp',
    takeOnFails: true,
    pathPattern: '${DATE}/${FIXTURE}/network/${TEST}_${TIME}_${QUARANTINE_ATTEMPT}.json',
    requestLimit: 0,
  },
};
RequiredArgumentDescriptionExample
Yesnetwork.pathThe base directory where screenshots are savedtmp
Yesnetwork.takeOnFailstrue to take a screenshot whenever a test fails.true
Yesnetwork.pathPatternA pattern that defines how TestCafe composes the relative path to a screenshot file. See Screenshot and Video Directories.${DATE}/${TEST}.json
Yesnetwork.requestLimitdefines number of requests that should be logged, 0 means all3

Enable request logging

Once configured last step is to attach hook in .testcaferc.js file

const networkRequestLogger = require('testcafe-global-network-request-logger')(/* FILTER */);

module.exports = {
  // some other config
  network: {
    // network config
  },
  hooks: {
    test: {
      before: async t => {
        await networkRequestLogger.onBeforeHook(t);
      },
      after: async t => {
        await networkRequestLogger.onAfterHook(t);
      },
    },
  },
};

FILTER

Leave undefined for default (records all HTTP non OPTION, JSON requests) or define custom filter as described in testcafe docs

Examples

See working examples in examples folder

Author

Rafal Szczepankiewicz

2.0.0

2 years ago

1.1.0

2 years ago

1.0.0

2 years ago

0.4.1

2 years ago

0.4.0

2 years ago

0.3.0

2 years ago

0.2.0

2 years ago

0.1.0

2 years ago