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
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,
},
};
Required | Argument | Description | Example |
---|---|---|---|
Yes | network.path | The base directory where screenshots are saved | tmp |
Yes | network.takeOnFails |
true to take a screenshot whenever a test fails. |
true |
Yes | network.pathPattern | A pattern that defines how TestCafe composes the relative path to a screenshot file. See Screenshot and Video Directories. | ${DATE}/${TEST}.json |
Yes | network.requestLimit | defines number of requests that should be logged, 0 means all |
3 |
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