Skip to content

Testplane plugin that allows you to mock HTTP requests. Works only with browsers that support the CDP protocol

License

Notifications You must be signed in to change notification settings

gemini-testing/testplane-mocks

Folders and files

NameName
Last commit message
Last commit date

Latest commit

92a6a0c · Sep 24, 2024

History

21 Commits
Sep 23, 2024
Feb 25, 2023
Mar 17, 2023
Feb 25, 2023
Feb 25, 2023
Nov 2, 2022
Nov 2, 2022
Sep 23, 2024
Feb 25, 2023
Sep 24, 2024
Sep 24, 2024
Nov 2, 2022
Sep 23, 2024
Sep 23, 2024

Repository files navigation

@testplane/mocks

A testplane plugin that allows you to save/read data dumps from network requests.

This can increase the stability of tests, allows testing time-dependent scenarios, and reduces the load on the server.

Works only with browsers that support the CDP protocol.

Installation

npm install @testplane/mocks --save-dev

Usage

  • enabled (optional) Boolean – enable/disable the plugin. By default plugin is disabled;
  • patterns (optional) {url: string, resources: string[] | "*"}[]:
    • url (string) - A url pattern of mocking host. Example - "https://nodejs.org/*"
    • resources ("*" | string[]) - An array of resource types to be mocked. Supported resource types: "Document", "Stylesheet", "Image", "Media", "Script", "XHR", "Fetch". You can also use "*" instead of array, it will work the same way as array of all mentioned resource types
  • browsers (optional) string[] - array of browserId (from Testplane config) to intercept requests for. Each of them should be using chrome-devtools protocol. Default - []
  • mode (optional) "play" | "save" | "create" - plugin's mode. Default - "save". Available modes:
    • "play": Reads dumps from fs (dumps should exist)
    • "save": Writes dumps to fs. Overwrites existing dumps
    • "create": Writes dumps to fs. Doesn't overwrite existing dumps
  • dumpsDir (optional) string | (test: Test) => string - dumps' directory. Default - "testplane-dumps". Available types:
    • string: (ex: "testplane-dumps"). All your dumps will be located in testplane-dumps in the root of the project.
    • (test: Test) => string: (ex: path.join(path.dirname(test.file), "testplane-dumps"). testplane-dumps directories will be located next to each Testplane test). Saves tests' dumps to directories by path, returned by the function
  • dumpsKey (optional) (requestUrl: string) => string - function to create dumps key from request url. Сan be used to remove query parameters that unique every time. If you dont remove unique query params, you will encounter an error Cache is empty: key=... on play mode.
  • gzipDumps (optional) Boolean - enable/disable dump compressing. By default dumps are written and read in compressed form

Also there is ability to override plugin parameters by CLI options or environment variables (see configparser).

Use testplane_mocks_ prefix for the environment variables and --mocks- for the cli options.

  • Add @testplane/mocks plugin to your testplane config file:
// .testplane.conf.js
module.exports = {
    plugins: {
        '@testplane/mocks': {
            enabled: true,
            patterns: [
                {
                    url: "https://www.npmjs.com/*",
                    resources: ["Document", "Stylesheet", "Image", "Media", "Script", "XHR", "Fetch"]
                },
                {
                    url: "https://www.github.com/*",
                    resources: "*"
                }
            ]
            browsers: ["chrome"],
            mode: "save",
            dumpsDir: "testplane-dumps",
            dumpsKey: (requestUrl) => {
                const urlObj = new URL(requestUrl);

                urlObj.searchParams.delete('uniqRequestId');

                return urlObj.toString();
            },
            gzipDumps: true
        },

        // other Testplane plugins...
    },

    // other Testplane settings...
}

About

Testplane plugin that allows you to mock HTTP requests. Works only with browsers that support the CDP protocol

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published