2.0.0 • Published 5 years ago
flaretest v2.0.0
flaretest
Cache rule testing utility for Cloudflare
Requirements
Node.js 10.x, 12.x, and 14.x
Install
$ yarn add --dev flaretestor
$ npm install --save-dev flaretestAPI
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. CurrentlynoQueryStringis 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);