flaretest
Cache rule testing utility for Cloudflare
Requirements
Node.js 10.x, 12.x, and 14.x
Install
$ yarn add --dev flaretest
or
$ npm install --save-dev flaretest
API
new FlareTest(hostname, options)
hostname
: string
- A hostname of the test target websiteoptions.userAgents
: { [userAgentName: string]: string }
- User agent strings which FlareTest sends to the test target website
FlareTest.prototype.run(testconfigs)
testconfigs
: object[]
- Array of test configstestconfigs[].paths
: string[]
- Array of paths to testtestconfigs[].cached
: boolean
- If target paths should be cached by Cloudflare edgetestconfigs[].redirectHttps
: boolean
- If it forces redirection to HTTPS URL when users open the target pathstestconfigs[].status
: number
- Expected status codetestconfigs[].cacheLevel
: string
- Expected cache level. standart
, ignoreQueryString
, or noQueryString
. See Understand Cloudflare Caching Level for each cache levels. You need to purge cache before testing cache level, or the test may fail. Currently noQueryString
is not supported yet.
throws: AssertionError
when any test item is not matched with expected value.
returns: Promise<void>
- a Promise object
Example
Here's an example using Jest:
const { FlareTest } = require("flaretest");
const flaretest = new FlareTest("example.com", {
userAgents: {
desktop: "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3163.100 Safari/537.36",
mobile: "Mozilla/5.0 (Linux; Android 7.1.2; Kingbox Build/NHG47K; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/73.0.3653.0 Safari/537.36",
}
});
test("Cache rules", async () => {
await flaretest.run([
{
paths: [
"/foo/bar",
"/boo",
"/woo.css",
],
cached: true,
redirectHttps: true,
status: 200,
},
{
paths: [
"/path-with-query",
],
cached: true,
redirectHttps: true,
status: 200,
cacheLevel: "standard",
},
]);
}, 30000);