flaretest
v2.0.0
Published
![GitHub Actions](https://github.com/Spelldata/flaretest/workflows/Actions/badge.svg)
Downloads
6
Readme
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
, ornoQueryString
. See Understand Cloudflare Caching Level for each cache levels. You need to purge cache before testing cache level, or the test may fail. CurrentlynoQueryString
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"); // or import FlareTest from "flaretest";
// Initialize flaretest
const flaretest = new FlareTest("example.com", {
// User agent strings used when flaretest make access to the websites.
// If two or more user agent strings is listed here, flaretest make accesses
// for multiple times with each user agent strings
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", // or ignoreQueryString or noQueryString
},
]);
}, 30000);