1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
|
import {
compile,
getCompiler,
getEntryByInjectType,
getErrors,
getWarnings,
runInJsDom,
} from "./helpers/index";
describe('"attributes" option', () => {
const injectTypes = [
"styleTag",
"singletonStyleTag",
"lazyStyleTag",
"lazySingletonStyleTag",
"linkTag",
];
injectTypes.forEach((injectType) => {
it(`should add attributes to tag when the "injectType" option is "${injectType}"`, async () => {
expect.assertions(3);
const entry = getEntryByInjectType("simple.js", injectType);
const compiler = getCompiler(entry, {
injectType,
attributes: {
type: "text/css",
foo: "bar",
"data-id": "style-tag-id",
},
});
const stats = await compile(compiler);
runInJsDom("main.bundle.js", compiler, stats, (dom) => {
expect(dom.serialize()).toMatchSnapshot("DOM");
});
expect(getWarnings(stats)).toMatchSnapshot("warnings");
expect(getErrors(stats)).toMatchSnapshot("errors");
});
it(`should apply nonce attribute when "injectType" option is "${injectType}"`, async () => {
expect.assertions(3);
const entry = getEntryByInjectType("simple.js", injectType);
const compiler = getCompiler(entry, {
injectType,
attributes: {
nonce: "234567",
},
});
const stats = await compile(compiler);
runInJsDom("main.bundle.js", compiler, stats, (dom) => {
expect(dom.serialize()).toMatchSnapshot("DOM");
});
expect(getWarnings(stats)).toMatchSnapshot("warnings");
expect(getErrors(stats)).toMatchSnapshot("errors");
});
it(`should add nonce attribute when "injectType" option is "${injectType}"`, async () => {
expect.assertions(3);
const entry = getEntryByInjectType("nonce-require.js", injectType);
const compiler = getCompiler(entry, { injectType, esModule: false });
const stats = await compile(compiler);
runInJsDom("main.bundle.js", compiler, stats, (dom) => {
expect(dom.serialize()).toMatchSnapshot("DOM");
});
expect(getWarnings(stats)).toMatchSnapshot("warnings");
expect(getErrors(stats)).toMatchSnapshot("errors");
});
it(`should add nonce attribute when "injectType" option is "${injectType}" #2`, async () => {
expect.assertions(3);
const entry = getEntryByInjectType("nonce-import.js", injectType);
const compiler = getCompiler(entry, { injectType });
const stats = await compile(compiler);
runInJsDom("main.bundle.js", compiler, stats, (dom) => {
expect(dom.serialize()).toMatchSnapshot("DOM");
});
expect(getWarnings(stats)).toMatchSnapshot("warnings");
expect(getErrors(stats)).toMatchSnapshot("errors");
});
});
});
|