mirror of
https://github.com/microsoft/playwright.git
synced 2025-01-07 03:39:48 +03:00
chore: un-experiment expect(pageOrLocator).toHaveScreenshot()
(#14033)
This patch un-experiments `expect(pageOrLocator).toHaveScreenshot()` method. Fixes #13526
This commit is contained in:
parent
56b3bca8db
commit
5aa82dc5e4
@ -1004,7 +1004,6 @@ Property value.
|
|||||||
|
|
||||||
## async method: LocatorAssertions.toHaveScreenshot
|
## async method: LocatorAssertions.toHaveScreenshot
|
||||||
* langs: js
|
* langs: js
|
||||||
* experimental
|
|
||||||
|
|
||||||
Ensures that [Locator] resolves to a given screenshot. This function will re-take
|
Ensures that [Locator] resolves to a given screenshot. This function will re-take
|
||||||
screenshots until it matches with the saved expectation.
|
screenshots until it matches with the saved expectation.
|
||||||
|
@ -116,7 +116,6 @@ Expected substring or RegExp.
|
|||||||
|
|
||||||
## async method: PageAssertions.toHaveScreenshot
|
## async method: PageAssertions.toHaveScreenshot
|
||||||
* langs: js
|
* langs: js
|
||||||
* experimental
|
|
||||||
|
|
||||||
Ensures that the page resolves to a given screenshot. This function will re-take
|
Ensures that the page resolves to a given screenshot. This function will re-take
|
||||||
screenshots until it matches with the saved expectation.
|
screenshots until it matches with the saved expectation.
|
||||||
|
@ -36,7 +36,7 @@ export default config;
|
|||||||
## property: TestConfig.expect
|
## property: TestConfig.expect
|
||||||
- type: ?<[Object]>
|
- type: ?<[Object]>
|
||||||
- `timeout` ?<[int]> Default timeout for async expect matchers in milliseconds, defaults to 5000ms.
|
- `timeout` ?<[int]> Default timeout for async expect matchers in milliseconds, defaults to 5000ms.
|
||||||
- `toHaveScreenshot` ?e<[Object]> Configuration for the [`method: PageAssertions.toHaveScreenshot`] method.
|
- `toHaveScreenshot` ?<[Object]> Configuration for the [`method: PageAssertions.toHaveScreenshot`] method.
|
||||||
- `threshold` ?<[float]> an acceptable perceived color difference in the [YIQ color space](https://en.wikipedia.org/wiki/YIQ) between the same pixel in compared images, between zero (strict) and one (lax). Defaults to `0.2`.
|
- `threshold` ?<[float]> an acceptable perceived color difference in the [YIQ color space](https://en.wikipedia.org/wiki/YIQ) between the same pixel in compared images, between zero (strict) and one (lax). Defaults to `0.2`.
|
||||||
- `maxDiffPixels` ?<[int]> an acceptable amount of pixels that could be different, unset by default.
|
- `maxDiffPixels` ?<[int]> an acceptable amount of pixels that could be different, unset by default.
|
||||||
- `maxDiffPixelRatio` ?<[float]> an acceptable ratio of pixels that are different to the total amount of pixels, between `0` and `1` , unset by default.
|
- `maxDiffPixelRatio` ?<[float]> an acceptable ratio of pixels that are different to the total amount of pixels, between `0` and `1` , unset by default.
|
||||||
|
@ -107,7 +107,7 @@ export default config;
|
|||||||
## property: TestProject.expect
|
## property: TestProject.expect
|
||||||
- type: ?<[Object]>
|
- type: ?<[Object]>
|
||||||
- `timeout` ?<[int]> Default timeout for async expect matchers in milliseconds, defaults to 5000ms.
|
- `timeout` ?<[int]> Default timeout for async expect matchers in milliseconds, defaults to 5000ms.
|
||||||
- `toHaveScreenshot` ?e<[Object]> Configuration for the [`method: PageAssertions.toHaveScreenshot`] method.
|
- `toHaveScreenshot` ?<[Object]> Configuration for the [`method: PageAssertions.toHaveScreenshot`] method.
|
||||||
- `threshold` ?<[float]> an acceptable perceived color difference in the [YIQ color space](https://en.wikipedia.org/wiki/YIQ) between the same pixel in compared images, between zero (strict) and one (lax). Defaults to `0.2`.
|
- `threshold` ?<[float]> an acceptable perceived color difference in the [YIQ color space](https://en.wikipedia.org/wiki/YIQ) between the same pixel in compared images, between zero (strict) and one (lax). Defaults to `0.2`.
|
||||||
- `maxDiffPixels` ?<[int]> an acceptable amount of pixels that could be different, unset by default.
|
- `maxDiffPixels` ?<[int]> an acceptable amount of pixels that could be different, unset by default.
|
||||||
- `maxDiffPixelRatio` ?<[float]> an acceptable ratio of pixels that are different to the total amount of pixels, between `0` and `1` , unset by default.
|
- `maxDiffPixelRatio` ?<[float]> an acceptable ratio of pixels that are different to the total amount of pixels, between `0` and `1` , unset by default.
|
||||||
|
@ -289,13 +289,11 @@ export async function toHaveScreenshot(
|
|||||||
nameOrOptions: NameOrSegments | { name?: NameOrSegments } & HaveScreenshotOptions = {},
|
nameOrOptions: NameOrSegments | { name?: NameOrSegments } & HaveScreenshotOptions = {},
|
||||||
optOptions: HaveScreenshotOptions = {}
|
optOptions: HaveScreenshotOptions = {}
|
||||||
): Promise<SyncExpectationResult> {
|
): Promise<SyncExpectationResult> {
|
||||||
if (!process.env.PLAYWRIGHT_EXPERIMENTAL_FEATURES)
|
|
||||||
throw new Error(`To use the experimental method "toHaveScreenshot", set PLAYWRIGHT_EXPERIMENTAL_FEATURES=1 enviroment variable.`);
|
|
||||||
const testInfo = currentTestInfo();
|
const testInfo = currentTestInfo();
|
||||||
if (!testInfo)
|
if (!testInfo)
|
||||||
throw new Error(`toHaveScreenshot() must be called during the test`);
|
throw new Error(`toHaveScreenshot() must be called during the test`);
|
||||||
const config = (testInfo.project._expect as any)?.toHaveScreenshot;
|
const config = (testInfo.project._expect as any)?.toHaveScreenshot;
|
||||||
const snapshotPathResolver = process.env.PLAYWRIGHT_EXPERIMENTAL_FEATURES && config?._useScreenshotsDir
|
const snapshotPathResolver = process.env.PWTEST_USE_SCREENSHOTS_DIR_FOR_TEST
|
||||||
? testInfo._screenshotPath.bind(testInfo)
|
? testInfo._screenshotPath.bind(testInfo)
|
||||||
: testInfo.snapshotPath.bind(testInfo);
|
: testInfo.snapshotPath.bind(testInfo);
|
||||||
const helper = new SnapshotHelper(
|
const helper = new SnapshotHelper(
|
||||||
|
262
packages/playwright-test/types/test.d.ts
vendored
262
packages/playwright-test/types/test.d.ts
vendored
@ -501,6 +501,47 @@ interface TestConfig {
|
|||||||
*/
|
*/
|
||||||
timeout?: number;
|
timeout?: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Configuration for the
|
||||||
|
* [pageAssertions.toHaveScreenshot([options])](https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-screenshot)
|
||||||
|
* method.
|
||||||
|
*/
|
||||||
|
toHaveScreenshot?: {
|
||||||
|
/**
|
||||||
|
* an acceptable perceived color difference in the [YIQ color space](https://en.wikipedia.org/wiki/YIQ) between the same
|
||||||
|
* pixel in compared images, between zero (strict) and one (lax). Defaults to `0.2`.
|
||||||
|
*/
|
||||||
|
threshold?: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* an acceptable amount of pixels that could be different, unset by default.
|
||||||
|
*/
|
||||||
|
maxDiffPixels?: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* an acceptable ratio of pixels that are different to the total amount of pixels, between `0` and `1` , unset by default.
|
||||||
|
*/
|
||||||
|
maxDiffPixelRatio?: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* See `animations` in [page.screenshot([options])](https://playwright.dev/docs/api/class-page#page-screenshot). Defaults
|
||||||
|
* to `"disable"`.
|
||||||
|
*/
|
||||||
|
animations?: "allow"|"disable";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* See `caret` in [page.screenshot([options])](https://playwright.dev/docs/api/class-page#page-screenshot). Defaults to
|
||||||
|
* `"hide"`.
|
||||||
|
*/
|
||||||
|
caret?: "hide"|"initial";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* See `scale` in [page.screenshot([options])](https://playwright.dev/docs/api/class-page#page-screenshot). Defaults to
|
||||||
|
* `"css"`.
|
||||||
|
*/
|
||||||
|
scale?: "css"|"device";
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Configuration for the
|
* Configuration for the
|
||||||
* [screenshotAssertions.toMatchSnapshot(name[, options])](https://playwright.dev/docs/api/class-screenshotassertions#screenshot-assertions-to-match-snapshot-1)
|
* [screenshotAssertions.toMatchSnapshot(name[, options])](https://playwright.dev/docs/api/class-screenshotassertions#screenshot-assertions-to-match-snapshot-1)
|
||||||
@ -3303,6 +3344,81 @@ interface LocatorAssertions {
|
|||||||
timeout?: number;
|
timeout?: number;
|
||||||
}): Promise<void>;
|
}): Promise<void>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ensures that [Locator] resolves to a given screenshot. This function will re-take screenshots until it matches with the
|
||||||
|
* saved expectation.
|
||||||
|
*
|
||||||
|
* If there's no expectation yet, it will wait until two consecutive screenshots yield the same result, and save the last
|
||||||
|
* one as an expectation.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* const locator = page.locator('button');
|
||||||
|
* await expect(locator).toHaveScreenshot();
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* @param options
|
||||||
|
*/
|
||||||
|
toHaveScreenshot(options?: {
|
||||||
|
/**
|
||||||
|
* When set to `"disabled"`, stops CSS animations, CSS transitions and Web Animations. Animations get different treatment
|
||||||
|
* depending on their duration:
|
||||||
|
* - finite animations are fast-forwarded to completion, so they'll fire `transitionend` event.
|
||||||
|
* - infinite animations are canceled to initial state, and then played over after the screenshot.
|
||||||
|
*
|
||||||
|
* Defaults to `"allow"` that leaves animations untouched.
|
||||||
|
*/
|
||||||
|
animations?: "disabled"|"allow";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* When set to `"hide"`, screenshot will hide text caret. When set to `"initial"`, text caret behavior will not be changed.
|
||||||
|
* Defaults to `"hide"`.
|
||||||
|
*/
|
||||||
|
caret?: "hide"|"initial";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Specify locators that should be masked when the screenshot is taken. Masked elements will be overlayed with a pink box
|
||||||
|
* `#FF00FF` that completely covers its bounding box.
|
||||||
|
*/
|
||||||
|
mask?: Array<Locator>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An acceptable ratio of pixels that are different to the total amount of pixels, between `0` and `1`. Default is
|
||||||
|
* configurable with `TestConfig.expect`. Unset by default.
|
||||||
|
*/
|
||||||
|
maxDiffPixelRatio?: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An acceptable amount of pixels that could be different, default is configurable with `TestConfig.expect`. Default is
|
||||||
|
* configurable with `TestConfig.expect`. Unset by default.
|
||||||
|
*/
|
||||||
|
maxDiffPixels?: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hides default white background and allows capturing screenshots with transparency. Not applicable to `jpeg` images.
|
||||||
|
* Defaults to `false`.
|
||||||
|
*/
|
||||||
|
omitBackground?: boolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* When set to `"css"`, screenshot will have a single pixel per each css pixel on the page. For high-dpi devices, this will
|
||||||
|
* keep screenshots small. Using `"device"` option will produce a single pixel per each device pixel, so screenhots of
|
||||||
|
* high-dpi devices will be twice as large or even larger. Defaults to `"device"`.
|
||||||
|
*/
|
||||||
|
scale?: "css"|"device";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An acceptable perceived color difference in the [YIQ color space](https://en.wikipedia.org/wiki/YIQ) between the same
|
||||||
|
* pixel in compared images, between zero (strict) and one (lax), default is configurable with `TestConfig.expect`.
|
||||||
|
* Defaults to `0.2`.
|
||||||
|
*/
|
||||||
|
threshold?: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Time to retry the assertion for. Defaults to `timeout` in `TestConfig.expect`.
|
||||||
|
*/
|
||||||
|
timeout?: number;
|
||||||
|
}): Promise<void>;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ensures the [Locator] points to an element with the given text. You can use regular expressions for the value as well.
|
* Ensures the [Locator] points to an element with the given text. You can use regular expressions for the value as well.
|
||||||
*
|
*
|
||||||
@ -3382,6 +3498,111 @@ interface PageAssertions {
|
|||||||
*/
|
*/
|
||||||
not: PageAssertions;
|
not: PageAssertions;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ensures that the page resolves to a given screenshot. This function will re-take screenshots until it matches with the
|
||||||
|
* saved expectation.
|
||||||
|
*
|
||||||
|
* If there's no expectation yet, it will wait until two consecutive screenshots yield the same result, and save the last
|
||||||
|
* one as an expectation.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* await expect(page).toHaveScreenshot();
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* @param options
|
||||||
|
*/
|
||||||
|
toHaveScreenshot(options?: {
|
||||||
|
/**
|
||||||
|
* When set to `"disabled"`, stops CSS animations, CSS transitions and Web Animations. Animations get different treatment
|
||||||
|
* depending on their duration:
|
||||||
|
* - finite animations are fast-forwarded to completion, so they'll fire `transitionend` event.
|
||||||
|
* - infinite animations are canceled to initial state, and then played over after the screenshot.
|
||||||
|
*
|
||||||
|
* Defaults to `"allow"` that leaves animations untouched.
|
||||||
|
*/
|
||||||
|
animations?: "disabled"|"allow";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* When set to `"hide"`, screenshot will hide text caret. When set to `"initial"`, text caret behavior will not be changed.
|
||||||
|
* Defaults to `"hide"`.
|
||||||
|
*/
|
||||||
|
caret?: "hide"|"initial";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An object which specifies clipping of the resulting image. Should have the following fields:
|
||||||
|
*/
|
||||||
|
clip?: {
|
||||||
|
/**
|
||||||
|
* x-coordinate of top-left corner of clip area
|
||||||
|
*/
|
||||||
|
x: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* y-coordinate of top-left corner of clip area
|
||||||
|
*/
|
||||||
|
y: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* width of clipping area
|
||||||
|
*/
|
||||||
|
width: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* height of clipping area
|
||||||
|
*/
|
||||||
|
height: number;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* When true, takes a screenshot of the full scrollable page, instead of the currently visible viewport. Defaults to
|
||||||
|
* `false`.
|
||||||
|
*/
|
||||||
|
fullPage?: boolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Specify locators that should be masked when the screenshot is taken. Masked elements will be overlayed with a pink box
|
||||||
|
* `#FF00FF` that completely covers its bounding box.
|
||||||
|
*/
|
||||||
|
mask?: Array<Locator>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An acceptable ratio of pixels that are different to the total amount of pixels, between `0` and `1`. Default is
|
||||||
|
* configurable with `TestConfig.expect`. Unset by default.
|
||||||
|
*/
|
||||||
|
maxDiffPixelRatio?: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An acceptable amount of pixels that could be different, default is configurable with `TestConfig.expect`. Default is
|
||||||
|
* configurable with `TestConfig.expect`. Unset by default.
|
||||||
|
*/
|
||||||
|
maxDiffPixels?: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hides default white background and allows capturing screenshots with transparency. Not applicable to `jpeg` images.
|
||||||
|
* Defaults to `false`.
|
||||||
|
*/
|
||||||
|
omitBackground?: boolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* When set to `"css"`, screenshot will have a single pixel per each css pixel on the page. For high-dpi devices, this will
|
||||||
|
* keep screenshots small. Using `"device"` option will produce a single pixel per each device pixel, so screenhots of
|
||||||
|
* high-dpi devices will be twice as large or even larger. Defaults to `"device"`.
|
||||||
|
*/
|
||||||
|
scale?: "css"|"device";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An acceptable perceived color difference in the [YIQ color space](https://en.wikipedia.org/wiki/YIQ) between the same
|
||||||
|
* pixel in compared images, between zero (strict) and one (lax), default is configurable with `TestConfig.expect`.
|
||||||
|
* Defaults to `0.2`.
|
||||||
|
*/
|
||||||
|
threshold?: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Time to retry the assertion for. Defaults to `timeout` in `TestConfig.expect`.
|
||||||
|
*/
|
||||||
|
timeout?: number;
|
||||||
|
}): Promise<void>;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ensures the page has the given title.
|
* Ensures the page has the given title.
|
||||||
*
|
*
|
||||||
@ -3614,6 +3835,47 @@ interface TestProject {
|
|||||||
*/
|
*/
|
||||||
timeout?: number;
|
timeout?: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Configuration for the
|
||||||
|
* [pageAssertions.toHaveScreenshot([options])](https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-screenshot)
|
||||||
|
* method.
|
||||||
|
*/
|
||||||
|
toHaveScreenshot?: {
|
||||||
|
/**
|
||||||
|
* an acceptable perceived color difference in the [YIQ color space](https://en.wikipedia.org/wiki/YIQ) between the same
|
||||||
|
* pixel in compared images, between zero (strict) and one (lax). Defaults to `0.2`.
|
||||||
|
*/
|
||||||
|
threshold?: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* an acceptable amount of pixels that could be different, unset by default.
|
||||||
|
*/
|
||||||
|
maxDiffPixels?: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* an acceptable ratio of pixels that are different to the total amount of pixels, between `0` and `1` , unset by default.
|
||||||
|
*/
|
||||||
|
maxDiffPixelRatio?: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* See `animations` in [page.screenshot([options])](https://playwright.dev/docs/api/class-page#page-screenshot). Defaults
|
||||||
|
* to `"disable"`.
|
||||||
|
*/
|
||||||
|
animations?: "allow"|"disable";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* See `caret` in [page.screenshot([options])](https://playwright.dev/docs/api/class-page#page-screenshot). Defaults to
|
||||||
|
* `"hide"`.
|
||||||
|
*/
|
||||||
|
caret?: "hide"|"initial";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* See `scale` in [page.screenshot([options])](https://playwright.dev/docs/api/class-page#page-screenshot). Defaults to
|
||||||
|
* `"css"`.
|
||||||
|
*/
|
||||||
|
scale?: "css"|"device";
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Configuration for the
|
* Configuration for the
|
||||||
* [screenshotAssertions.toMatchSnapshot(name[, options])](https://playwright.dev/docs/api/class-screenshotassertions#screenshot-assertions-to-match-snapshot-1)
|
* [screenshotAssertions.toMatchSnapshot(name[, options])](https://playwright.dev/docs/api/class-screenshotassertions#screenshot-assertions-to-match-snapshot-1)
|
||||||
|
@ -180,9 +180,8 @@ test('should include multiple image diffs', async ({ runInlineTest, page, showRe
|
|||||||
|
|
||||||
const result = await runInlineTest({
|
const result = await runInlineTest({
|
||||||
'playwright.config.ts': `
|
'playwright.config.ts': `
|
||||||
process.env.PLAYWRIGHT_EXPERIMENTAL_FEATURES = 1;
|
process.env.PWTEST_USE_SCREENSHOTS_DIR_FOR_TEST = '1';
|
||||||
module.exports = {
|
module.exports = {
|
||||||
expect: { toHaveScreenshot: { _useScreenshotsDir: true } },
|
|
||||||
screenshotsDir: '__screenshots__',
|
screenshotsDir: '__screenshots__',
|
||||||
use: { viewport: { width: ${IMG_WIDTH}, height: ${IMG_HEIGHT} }}
|
use: { viewport: { width: ${IMG_WIDTH}, height: ${IMG_HEIGHT} }}
|
||||||
};
|
};
|
||||||
|
@ -99,10 +99,9 @@ test('should fail with proper error when unsupported argument is given', async (
|
|||||||
|
|
||||||
test('should use match snapshot paths by default', async ({ runInlineTest }, testInfo) => {
|
test('should use match snapshot paths by default', async ({ runInlineTest }, testInfo) => {
|
||||||
const result = await runInlineTest({
|
const result = await runInlineTest({
|
||||||
// The helper function `playwrightConfig` injects a `_useScreenshotsDir` flag.
|
// The helper function `playwrightConfig` set PWTEST_USE_SCREENSHOTS_DIR_FOR_TEST env variable.
|
||||||
// Provide default config manually instead.
|
// Provide default config manually instead.
|
||||||
'playwright.config.js': `
|
'playwright.config.js': `
|
||||||
process.env.PLAYWRIGHT_EXPERIMENTAL_FEATURES = '1';
|
|
||||||
module.exports = {};
|
module.exports = {};
|
||||||
`,
|
`,
|
||||||
'a.spec.js': `
|
'a.spec.js': `
|
||||||
@ -941,12 +940,9 @@ test('should update expectations with retries', async ({ runInlineTest }, testIn
|
|||||||
});
|
});
|
||||||
|
|
||||||
function playwrightConfig(obj: any) {
|
function playwrightConfig(obj: any) {
|
||||||
obj.expect ??= {};
|
|
||||||
obj.expect.toHaveScreenshot ??= {};
|
|
||||||
obj.expect.toHaveScreenshot._useScreenshotsDir ??= true;
|
|
||||||
return {
|
return {
|
||||||
'playwright.config.js': `
|
'playwright.config.js': `
|
||||||
process.env.PLAYWRIGHT_EXPERIMENTAL_FEATURES = '1';
|
process.env.PWTEST_USE_SCREENSHOTS_DIR_FOR_TEST = '1';
|
||||||
module.exports = ${JSON.stringify(obj, null, 2)}
|
module.exports = ${JSON.stringify(obj, null, 2)}
|
||||||
`,
|
`,
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user