2022-04-20 11:46:21 +00:00
|
|
|
// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license.
|
|
|
|
import { stripColor } from "../fmt/colors.ts";
|
2022-05-06 13:05:27 +00:00
|
|
|
import { dirname, fromFileUrl, join, toFileUrl } from "../path/mod.ts";
|
2022-07-02 09:24:42 +00:00
|
|
|
import {
|
|
|
|
assert,
|
|
|
|
assertInstanceOf,
|
|
|
|
AssertionError,
|
|
|
|
assertRejects,
|
|
|
|
fail,
|
|
|
|
} from "./asserts.ts";
|
|
|
|
import { assertSnapshot, createAssertSnapshot, serialize } from "./snapshot.ts";
|
2022-05-06 13:05:27 +00:00
|
|
|
|
|
|
|
const SNAPSHOT_MODULE_URL = toFileUrl(join(
|
|
|
|
dirname(fromFileUrl(import.meta.url)),
|
|
|
|
"snapshot.ts",
|
|
|
|
));
|
|
|
|
|
|
|
|
function formatTestOutput(string: string) {
|
|
|
|
// Strip colors and obfuscate any timings
|
|
|
|
return stripColor(string).replace(/([0-9])+m?s/g, "--ms").replace(
|
|
|
|
/(?<=running ([0-9])+ test(s)? from )(.*)(?=test.ts)/g,
|
|
|
|
"<tempDir>/",
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
function formatTestError(string: string) {
|
|
|
|
// Strip colors and remove "Check file:///workspaces/deno_std/testing/.tmp/test.ts"
|
|
|
|
// as this is always output to stderr
|
|
|
|
return stripColor(string).replace(/^Check file:\/\/(.+)\n/g, "");
|
|
|
|
}
|
|
|
|
|
|
|
|
function testFnWithTempDir(
|
|
|
|
fn: (t: Deno.TestContext, tempDir: string) => Promise<void>,
|
|
|
|
) {
|
|
|
|
return async (t: Deno.TestContext) => {
|
|
|
|
const tempDir = await Deno.makeTempDir();
|
|
|
|
try {
|
|
|
|
await fn(t, tempDir);
|
|
|
|
} finally {
|
|
|
|
await Deno.remove(tempDir, { recursive: true });
|
|
|
|
}
|
|
|
|
};
|
|
|
|
}
|
2022-04-20 11:46:21 +00:00
|
|
|
|
|
|
|
class TestClass {
|
|
|
|
a = 1;
|
|
|
|
b = 2;
|
|
|
|
init() {
|
|
|
|
this.b = 3;
|
|
|
|
}
|
|
|
|
get getA() {
|
|
|
|
return this.a;
|
|
|
|
}
|
|
|
|
func() {}
|
|
|
|
}
|
|
|
|
|
|
|
|
const map = new Map();
|
|
|
|
map.set("Hello", "World!");
|
|
|
|
map.set(() => "Hello", "World!");
|
|
|
|
map.set(1, 2);
|
|
|
|
|
|
|
|
Deno.test("Snapshot Test", async (t) => {
|
|
|
|
await assertSnapshot(t, { a: 1, b: 2 });
|
|
|
|
await assertSnapshot(t, new TestClass());
|
|
|
|
await assertSnapshot(t, map);
|
|
|
|
await assertSnapshot(t, new Set([1, 2, 3]));
|
|
|
|
await assertSnapshot(t, { fn() {} });
|
|
|
|
await assertSnapshot(t, function fn() {});
|
|
|
|
await assertSnapshot(t, [1, 2, 3]);
|
|
|
|
await assertSnapshot(t, "hello world");
|
|
|
|
});
|
|
|
|
|
|
|
|
Deno.test("Snapshot Test - step", async (t) => {
|
|
|
|
await assertSnapshot(t, { a: 1, b: 2 });
|
|
|
|
await t.step("Nested", async (t) => {
|
|
|
|
await assertSnapshot(t, new TestClass());
|
|
|
|
await assertSnapshot(t, map);
|
|
|
|
await t.step("Nested Nested", async (t) => {
|
|
|
|
await assertSnapshot(t, new Set([1, 2, 3]));
|
|
|
|
await assertSnapshot(t, { fn() {} });
|
|
|
|
await assertSnapshot(t, function fn() {});
|
|
|
|
});
|
|
|
|
await assertSnapshot(t, [1, 2, 3]);
|
|
|
|
});
|
|
|
|
await assertSnapshot(t, "hello world");
|
|
|
|
});
|
|
|
|
|
|
|
|
Deno.test("Snapshot Test - Adverse String \\ ` ${}", async (t) => {
|
|
|
|
await assertSnapshot(t, "\\ ` ${}");
|
|
|
|
});
|
|
|
|
|
2022-05-03 12:21:11 +00:00
|
|
|
Deno.test("Snapshot Test - Multi-Line Strings", async (t) => {
|
|
|
|
await t.step("string", async (t) => {
|
|
|
|
await assertSnapshot(
|
|
|
|
t,
|
|
|
|
`
|
|
|
|
<html>
|
|
|
|
<head>
|
|
|
|
<title>Snapshot Test - Multi-Line Strings</title>
|
|
|
|
</head>
|
|
|
|
<body>
|
|
|
|
<h1>
|
|
|
|
Snapshot Test - Multi-Line Strings
|
|
|
|
</h2>
|
|
|
|
<p>
|
|
|
|
This is a snapshot of a multi-line string.
|
|
|
|
</p>
|
|
|
|
</body>
|
|
|
|
</html>`,
|
|
|
|
);
|
|
|
|
});
|
|
|
|
|
|
|
|
await t.step("string in array", async (t) => {
|
|
|
|
await assertSnapshot(t, [
|
|
|
|
`
|
|
|
|
<h1>
|
|
|
|
Header
|
|
|
|
</h1>`,
|
|
|
|
`
|
|
|
|
<p>
|
|
|
|
Content
|
|
|
|
</p>`,
|
|
|
|
]);
|
|
|
|
});
|
|
|
|
|
|
|
|
await t.step("string in object", async (t) => {
|
|
|
|
await assertSnapshot(t, {
|
|
|
|
str: `
|
|
|
|
Line #1
|
|
|
|
Line #2
|
|
|
|
Line #3`,
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
2022-05-06 13:05:27 +00:00
|
|
|
Deno.test(
|
|
|
|
"Snapshot Test - Failed Assertion",
|
|
|
|
testFnWithTempDir(async (t, tempDir) => {
|
|
|
|
let count = 0;
|
|
|
|
async function testFailedAssertion<T>(
|
|
|
|
snapshot: T,
|
|
|
|
actual: T,
|
|
|
|
): Promise<AssertionError> {
|
|
|
|
const snapshotFilePath = join(tempDir, `snapshot_file_${++count}.snap`);
|
|
|
|
await Deno.writeTextFile(
|
|
|
|
snapshotFilePath,
|
|
|
|
`export const snapshot = {};
|
|
|
|
|
|
|
|
snapshot[\`name 1\`] = \`
|
|
|
|
${serialize(snapshot)}
|
|
|
|
\`;
|
|
|
|
`,
|
|
|
|
);
|
|
|
|
|
|
|
|
try {
|
|
|
|
await assertSnapshot(t, actual, {
|
|
|
|
path: snapshotFilePath,
|
|
|
|
mode: "assert",
|
|
|
|
name: "name",
|
|
|
|
});
|
|
|
|
fail("Snapshot assertion passed when it was expected to fail");
|
|
|
|
} catch (error) {
|
|
|
|
assertInstanceOf(error, AssertionError);
|
|
|
|
return error as AssertionError;
|
|
|
|
}
|
2022-04-20 11:46:21 +00:00
|
|
|
}
|
2022-05-06 13:05:27 +00:00
|
|
|
|
|
|
|
await t.step("Object", async (t) => {
|
|
|
|
const error = await testFailedAssertion([1, 2, 3], [1, 2]);
|
2022-05-03 12:21:11 +00:00
|
|
|
await assertSnapshot(t, stripColor(error.message));
|
2022-05-06 13:05:27 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
await t.step("String", async (t) => {
|
|
|
|
const error = await testFailedAssertion("Hello World!", "Hello!");
|
|
|
|
await assertSnapshot(t, stripColor(error.message));
|
|
|
|
});
|
|
|
|
}),
|
|
|
|
);
|
|
|
|
|
|
|
|
Deno.test("Snapshot Test - Options", async (t) => {
|
|
|
|
const VALUE = [1, 2, 3];
|
|
|
|
|
|
|
|
await t.step("dir", async (t) => {
|
|
|
|
await t.step("relative", async (t) => {
|
|
|
|
await assertSnapshot(t, VALUE, {
|
|
|
|
dir: "__snapshots__/options_tests/",
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
await t.step("absolute", async (t) => {
|
|
|
|
await assertSnapshot(t, VALUE, {
|
|
|
|
dir: join(Deno.cwd(), "testing/__snapshots__/options_tests/"),
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
await t.step("path", async (t) => {
|
|
|
|
await t.step("relative", async (t) => {
|
|
|
|
await assertSnapshot(t, VALUE, {
|
|
|
|
path: "__snapshots__/options_tests/custom_path.snap",
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
await t.step("absolute", async (t) => {
|
|
|
|
await assertSnapshot(t, VALUE, {
|
|
|
|
path: join(
|
|
|
|
Deno.cwd(),
|
|
|
|
"testing/__snapshots__/options_tests/custom_path.snap",
|
|
|
|
),
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
await t.step("name", async (t) => {
|
|
|
|
await assertSnapshot(t, VALUE, {
|
|
|
|
name: "custom name",
|
|
|
|
});
|
|
|
|
|
|
|
|
await assertSnapshot(t, VALUE, {
|
|
|
|
name: "custom name",
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
await t.step("serializer", async (t) => {
|
|
|
|
await assertSnapshot<Array<number>>(t, VALUE, {
|
|
|
|
serializer: (actual) => {
|
|
|
|
return `Array Length: ${actual.length}\n\n${serialize(actual)}`;
|
|
|
|
},
|
|
|
|
});
|
2022-04-20 11:46:21 +00:00
|
|
|
});
|
|
|
|
|
2022-05-06 13:05:27 +00:00
|
|
|
await t.step("msg", async (t) => {
|
|
|
|
await t.step("missing snapshot", async (t) => {
|
|
|
|
try {
|
|
|
|
await assertSnapshot<Array<number>>(t, VALUE, {
|
|
|
|
msg: "[CUSTOM ERROR MESSAGE - MISSING SNAPSHOT]",
|
|
|
|
mode: "assert",
|
|
|
|
name: "MISSING SNAPSHOT",
|
|
|
|
});
|
|
|
|
fail("Snapshot should not exist");
|
|
|
|
} catch (error) {
|
|
|
|
assertInstanceOf(error, AssertionError);
|
|
|
|
await assertSnapshot(t, error.message);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
await t.step("missing snapshot file", async (t) => {
|
|
|
|
try {
|
|
|
|
await assertSnapshot<Array<number>>(t, VALUE, {
|
|
|
|
msg: "[CUSTOM ERROR MESSAGE - MISSING SNAPSHOT]",
|
|
|
|
mode: "assert",
|
|
|
|
path: "MISSING_SNAPSHOT_FILE.snap",
|
|
|
|
});
|
|
|
|
fail("Snapshot file should not exist");
|
|
|
|
} catch (error) {
|
|
|
|
assertInstanceOf(error, AssertionError);
|
|
|
|
await assertSnapshot(t, error.message);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
await t.step(
|
|
|
|
"mode",
|
|
|
|
testFnWithTempDir(async (t, tempDir) => {
|
|
|
|
const snapshotFilePath = join(tempDir, "snapshot.snap");
|
|
|
|
const snapshotName = "snapshot";
|
|
|
|
|
|
|
|
async function runTest(test: string) {
|
|
|
|
const tempTestFileName = "test.ts";
|
|
|
|
const tempTestFilePath = join(tempDir, tempTestFileName);
|
|
|
|
await Deno.writeTextFile(tempTestFilePath, test);
|
|
|
|
|
|
|
|
const process = await Deno.run({
|
2022-06-15 22:05:49 +00:00
|
|
|
cmd: [
|
|
|
|
Deno.execPath(),
|
|
|
|
"test",
|
|
|
|
"--allow-all",
|
|
|
|
tempTestFilePath,
|
|
|
|
"--",
|
|
|
|
"-u",
|
|
|
|
],
|
2022-05-06 13:05:27 +00:00
|
|
|
stdout: "piped",
|
|
|
|
stderr: "piped",
|
|
|
|
});
|
|
|
|
const output = await process.output();
|
|
|
|
const error = await process.stderrOutput();
|
|
|
|
process.close();
|
|
|
|
|
|
|
|
return {
|
|
|
|
output: new TextDecoder().decode(output),
|
|
|
|
error: new TextDecoder().decode(error),
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
const result = await runTest(`
|
|
|
|
import { assertSnapshot } from "${SNAPSHOT_MODULE_URL}";
|
|
|
|
|
|
|
|
Deno.test("${snapshotName}", async (t) => {
|
|
|
|
await assertSnapshot(t, [1, 2, 3], {
|
|
|
|
path: "${snapshotFilePath.replace(/\\/g, "\\\\")}",
|
|
|
|
mode: "update",
|
|
|
|
});
|
|
|
|
});
|
|
|
|
`);
|
|
|
|
|
|
|
|
const { snapshot } = await import(toFileUrl(snapshotFilePath).toString());
|
2022-04-20 11:46:21 +00:00
|
|
|
|
2022-05-06 13:05:27 +00:00
|
|
|
await assertSnapshot(t, snapshot[`${snapshotName} 1`]);
|
|
|
|
await assertSnapshot(t, formatTestOutput(result.output));
|
|
|
|
assert(!formatTestError(result.error), "unexpected output to stderr");
|
|
|
|
}),
|
|
|
|
);
|
|
|
|
});
|
|
|
|
|
|
|
|
Deno.test(
|
|
|
|
"Snapshot Test - Update",
|
|
|
|
testFnWithTempDir(async (t, tempDir) => {
|
2022-04-20 11:46:21 +00:00
|
|
|
const tempTestFileName = "test.ts";
|
|
|
|
const tempTestFilePath = join(tempDir, tempTestFileName);
|
2022-05-06 13:05:27 +00:00
|
|
|
const tempSnapshotFilePath = join(
|
|
|
|
tempDir,
|
|
|
|
"__snapshots__",
|
|
|
|
`${tempTestFileName}.snap`,
|
|
|
|
);
|
2022-04-20 11:46:21 +00:00
|
|
|
|
2022-05-06 13:05:27 +00:00
|
|
|
async function runTestWithUpdateFlag(test: string) {
|
|
|
|
await Deno.writeTextFile(tempTestFilePath, test);
|
2022-04-20 11:46:21 +00:00
|
|
|
|
2022-11-15 06:00:59 +00:00
|
|
|
const command = new Deno.Command(Deno.execPath(), {
|
2022-05-25 09:08:27 +00:00
|
|
|
args: ["test", "--allow-all", tempTestFilePath, "--", "-u"],
|
2022-05-06 13:05:27 +00:00
|
|
|
});
|
2022-11-15 06:00:59 +00:00
|
|
|
const { stdout, stderr } = await command.output();
|
2022-05-06 13:05:27 +00:00
|
|
|
|
|
|
|
return {
|
2022-05-25 09:08:27 +00:00
|
|
|
output: new TextDecoder().decode(stdout),
|
|
|
|
error: new TextDecoder().decode(stderr),
|
2022-05-06 13:05:27 +00:00
|
|
|
snapshots: await Deno.readTextFile(tempSnapshotFilePath),
|
|
|
|
};
|
2022-04-20 11:46:21 +00:00
|
|
|
}
|
|
|
|
|
2022-05-06 13:05:27 +00:00
|
|
|
function assertNoError(error: string) {
|
|
|
|
if (formatTestError(error)) {
|
|
|
|
throw new AssertionError(`Unexpected Error:\n\n${error}\n`);
|
|
|
|
}
|
|
|
|
}
|
2022-04-20 11:46:21 +00:00
|
|
|
|
2022-05-06 13:05:27 +00:00
|
|
|
/**
|
|
|
|
* New snapshot
|
|
|
|
*/
|
|
|
|
const result1 = await runTestWithUpdateFlag(
|
|
|
|
`
|
|
|
|
import { assertSnapshot } from "${SNAPSHOT_MODULE_URL}";
|
2022-04-20 11:46:21 +00:00
|
|
|
|
2022-05-06 13:05:27 +00:00
|
|
|
Deno.test("Snapshot Test - Update", async (t) => {
|
|
|
|
await assertSnapshot(t, [
|
|
|
|
1,
|
|
|
|
2,
|
|
|
|
]);
|
|
|
|
});`,
|
|
|
|
);
|
2022-04-20 11:46:21 +00:00
|
|
|
|
2022-05-06 13:05:27 +00:00
|
|
|
assertNoError(result1.error);
|
|
|
|
await assertSnapshot(t, formatTestOutput(result1.output), {
|
|
|
|
name: "Snapshot Test - Update - New snapshot",
|
|
|
|
});
|
|
|
|
await assertSnapshot(t, result1.snapshots, {
|
|
|
|
name: "Snapshot Test - Update - New snapshot",
|
|
|
|
});
|
2022-04-20 11:46:21 +00:00
|
|
|
|
2022-05-06 13:05:27 +00:00
|
|
|
/**
|
|
|
|
* Existing snapshot - no changes
|
|
|
|
*/
|
|
|
|
const result2 = await runTestWithUpdateFlag(
|
|
|
|
`
|
|
|
|
import { assertSnapshot } from "${SNAPSHOT_MODULE_URL}";
|
2022-04-20 11:46:21 +00:00
|
|
|
|
2022-05-06 13:05:27 +00:00
|
|
|
Deno.test("Snapshot Test - Update", async (t) => {
|
|
|
|
await assertSnapshot(t, [
|
|
|
|
1,
|
|
|
|
2,
|
|
|
|
]);
|
|
|
|
});`,
|
|
|
|
);
|
2022-04-20 11:46:21 +00:00
|
|
|
|
2022-05-06 13:05:27 +00:00
|
|
|
assertNoError(result2.error);
|
|
|
|
await assertSnapshot(t, formatTestOutput(result2.output), {
|
|
|
|
name: "Snapshot Test - Update - Existing snapshot - no changes",
|
|
|
|
});
|
|
|
|
await assertSnapshot(t, result2.snapshots, {
|
|
|
|
name: "Snapshot Test - Update - Existing snapshot - no changes",
|
2022-04-20 11:46:21 +00:00
|
|
|
});
|
|
|
|
|
2022-05-06 13:05:27 +00:00
|
|
|
/**
|
|
|
|
* Existing snapshot - updates
|
|
|
|
*/
|
|
|
|
const result3 = await runTestWithUpdateFlag(`
|
|
|
|
import { assertSnapshot } from "${SNAPSHOT_MODULE_URL}";
|
2022-04-20 11:46:21 +00:00
|
|
|
|
2022-05-06 13:05:27 +00:00
|
|
|
Deno.test("Snapshot Test - Update", async (t) => {
|
|
|
|
await assertSnapshot(t, [
|
|
|
|
1,
|
|
|
|
2,
|
|
|
|
3,
|
|
|
|
5,
|
|
|
|
]);
|
|
|
|
});
|
|
|
|
`);
|
2022-04-20 11:46:21 +00:00
|
|
|
|
2022-05-06 13:05:27 +00:00
|
|
|
assertNoError(result3.error);
|
|
|
|
await assertSnapshot(t, formatTestOutput(result3.output), {
|
|
|
|
name: "Snapshot Test - Update - Existing snapshot - updates",
|
|
|
|
});
|
|
|
|
await assertSnapshot(t, result3.snapshots, {
|
|
|
|
name: "Snapshot Test - Update - Existing snapshot - updates",
|
2022-04-20 11:46:21 +00:00
|
|
|
});
|
|
|
|
|
2022-05-06 13:05:27 +00:00
|
|
|
/**
|
|
|
|
* Existing snapshots - reverse order 1
|
|
|
|
*/
|
|
|
|
const result4 = await runTestWithUpdateFlag(`
|
|
|
|
import { assertSnapshot } from "${SNAPSHOT_MODULE_URL}";
|
|
|
|
|
|
|
|
Deno.test("Snapshot Test - First", async (t) => {
|
|
|
|
await assertSnapshot(t, "FIRST");
|
|
|
|
});
|
|
|
|
|
|
|
|
Deno.test("Snapshot Test - Second", async (t) => {
|
|
|
|
await assertSnapshot(t, "SECOND");
|
|
|
|
});
|
|
|
|
`);
|
|
|
|
|
|
|
|
assertNoError(result4.error);
|
|
|
|
await assertSnapshot(t, formatTestOutput(result4.output), {
|
|
|
|
name: "Snapshot Test - Update - Existing snapshots - reverse order 1",
|
|
|
|
});
|
|
|
|
await assertSnapshot(t, result4.snapshots, {
|
|
|
|
name: "Snapshot Test - Update - Existing snapshots - reverse order 1",
|
|
|
|
});
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Existing snapshots - reverse order 2
|
|
|
|
*/
|
|
|
|
const result5 = await runTestWithUpdateFlag(`
|
|
|
|
import { assertSnapshot } from "${SNAPSHOT_MODULE_URL}";
|
|
|
|
|
|
|
|
Deno.test("Snapshot Test - Second", async (t) => {
|
|
|
|
await assertSnapshot(t, "SECOND");
|
|
|
|
});
|
|
|
|
|
|
|
|
Deno.test("Snapshot Test - First", async (t) => {
|
|
|
|
await assertSnapshot(t, "FIRST");
|
|
|
|
});
|
|
|
|
`);
|
|
|
|
|
|
|
|
assertNoError(result5.error);
|
|
|
|
await assertSnapshot(t, formatTestOutput(result5.output), {
|
|
|
|
name: "Snapshot Test - Update - Existing snapshots - reverse order 2",
|
|
|
|
});
|
|
|
|
await assertSnapshot(t, result5.snapshots, {
|
|
|
|
name: "Snapshot Test - Update - Existing snapshots - reverse order 2",
|
|
|
|
});
|
|
|
|
}),
|
|
|
|
);
|
2022-04-26 03:54:45 +00:00
|
|
|
|
|
|
|
// Regression test for https://github.com/denoland/deno_std/issues/2140
|
|
|
|
// Long strings should not be truncated with ellipsis
|
|
|
|
Deno.test("Snapshot Test - Regression #2140", async (t) => {
|
|
|
|
await assertSnapshot(t, {
|
|
|
|
title: "Testing a page",
|
|
|
|
content: `
|
|
|
|
<h1>Testing a page</h1>
|
|
|
|
<p>This is a test</p>
|
|
|
|
<ul>
|
|
|
|
<li>1</li>
|
|
|
|
<li>2</li>
|
|
|
|
<li>3</li>
|
|
|
|
<li>4</li>
|
|
|
|
</ul>
|
|
|
|
`,
|
|
|
|
});
|
|
|
|
});
|
2022-04-27 00:55:37 +00:00
|
|
|
|
|
|
|
// Regression test for https://github.com/denoland/deno_std/issues/2144
|
|
|
|
// Empty arrays should be compacted
|
|
|
|
Deno.test("Snapshot Test - Regression #2144", async (t) => {
|
|
|
|
const config = {
|
|
|
|
fmt: {
|
|
|
|
files: {
|
|
|
|
exclude: [],
|
|
|
|
include: [],
|
|
|
|
},
|
|
|
|
options: {},
|
|
|
|
},
|
|
|
|
};
|
|
|
|
await assertSnapshot(t, config);
|
|
|
|
});
|
2022-05-30 13:21:05 +00:00
|
|
|
|
|
|
|
Deno.test("Snapshot Test - Empty #2245", async (t) => {
|
|
|
|
await assertSnapshot(t, "", { serializer: (x) => x });
|
|
|
|
});
|
2022-07-02 09:24:42 +00:00
|
|
|
|
|
|
|
Deno.test("SnapshotTest - createAssertSnapshot", async (t) => {
|
|
|
|
const assertMonochromeSnapshot = createAssertSnapshot<string>({
|
|
|
|
serializer: stripColor,
|
|
|
|
});
|
|
|
|
|
|
|
|
await t.step("No Options", async (t) => {
|
|
|
|
await assertMonochromeSnapshot(
|
|
|
|
t,
|
|
|
|
"\x1b[32mThis green text has had it's colours stripped\x1b[39m",
|
|
|
|
);
|
|
|
|
});
|
|
|
|
|
|
|
|
await t.step("Options Object", async (t) => {
|
|
|
|
await assertMonochromeSnapshot(
|
|
|
|
t,
|
|
|
|
"\x1b[32mThis green text has had it's colours stripped\x1b[39m",
|
|
|
|
{
|
|
|
|
name:
|
|
|
|
"SnapshotTest - createAssertSnapshot - Options Object - Custom Name",
|
|
|
|
},
|
|
|
|
);
|
|
|
|
});
|
|
|
|
|
|
|
|
await t.step("Message", async (t) => {
|
|
|
|
const assertMissingSnapshot = createAssertSnapshot<string>({
|
|
|
|
mode: "assert",
|
|
|
|
name: "[MISSING SNAPSHOT]",
|
|
|
|
});
|
|
|
|
|
|
|
|
const err = await assertRejects(async () => {
|
|
|
|
await assertMissingSnapshot(
|
|
|
|
t,
|
|
|
|
null,
|
|
|
|
"This snapshot has failed as expected",
|
|
|
|
);
|
|
|
|
}, AssertionError);
|
|
|
|
|
|
|
|
await assertSnapshot(t, err.message);
|
|
|
|
});
|
|
|
|
|
|
|
|
await t.step("Composite", async (t) => {
|
|
|
|
const assertMonochromeSnapshotComposite = createAssertSnapshot<string>({
|
|
|
|
name: "SnapshotTest - createAssertSnapshot - Composite - Custom Name",
|
|
|
|
}, assertMonochromeSnapshot);
|
|
|
|
|
|
|
|
await assertMonochromeSnapshotComposite(
|
|
|
|
t,
|
|
|
|
"\x1b[32mThis green text has had it's colours stripped\x1b[39m",
|
|
|
|
);
|
|
|
|
});
|
|
|
|
});
|