@stencil/core
Version:
A Compiler for Web Components and Progressive Web Apps
1,247 lines (1,183 loc) • 242 kB
JavaScript
/*!
Stencil Testing v4.8.0 | MIT Licensed | https://stenciljs.com
*/
function _lazyRequire(e) {
return new Proxy({}, {
get(t, r) {
const s = require(e);
return Reflect.get(s, r);
},
set(t, r, s) {
const n = require(e);
return Reflect.set(n, r, s);
}
});
}
function _interopDefaultLegacy(e) {
return e && "object" == typeof e && "default" in e ? e : {
default: e
};
}
function _interopNamespace(e) {
if (e && e.__esModule) return e;
var t = Object.create(null);
return e && Object.keys(e).forEach((function(r) {
if ("default" !== r) {
var s = Object.getOwnPropertyDescriptor(e, r);
Object.defineProperty(t, r, s.get ? s : {
enumerable: !0,
get: function() {
return e[r];
}
});
}
})), t.default = e, Object.freeze(t);
}
function createCommonjsModule(e, t, r) {
return e(r = {
path: t,
exports: {},
require: function(e, t) {
return function s() {
throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs");
}(null == t && r.path);
}
}, r.exports), r.exports;
}
async function startPuppeteerBrowser(e) {
if (!e.flags.e2e) return null;
const t = process.env, r = e.testing.browserExecutablePath ? "puppeteer-core" : "puppeteer", s = e.sys.lazyRequire.getModulePath(e.rootDir, r), n = e.sys.platformPath.join(s, "package.json"), o = e.sys.lazyRequire.require(e.rootDir, s);
t.__STENCIL_PUPPETEER_MODULE__ = s;
try {
const r = e.sys.readFileSync(n, "utf8"), s = JSON.parse(r);
t.__STENCIL_PUPPETEER_VERSION__ = major_1(s.version);
} catch (e) {
console.error(`An error occurred determining the version of Puppeteer installed:\n${e}`),
t.__STENCIL_PUPPETEER_VERSION__ = void 0;
}
t.__STENCIL_BROWSER_WAIT_UNTIL = e.testing.browserWaitUntil, e.flags.devtools && (t.__STENCIL_E2E_DEVTOOLS__ = "true"),
e.logger.debug(`puppeteer: ${s}`), e.logger.debug(`puppeteer headless: ${e.testing.browserHeadless}`),
Array.isArray(e.testing.browserArgs) && e.logger.debug(`puppeteer args: ${e.testing.browserArgs.join(" ")}`),
"boolean" == typeof e.testing.browserDevtools && e.logger.debug(`puppeteer devtools: ${e.testing.browserDevtools}`),
"number" == typeof e.testing.browserSlowMo && e.logger.debug(`puppeteer slowMo: ${e.testing.browserSlowMo}`);
const i = {
ignoreHTTPSErrors: !0,
slowMo: e.testing.browserSlowMo
};
let a;
if (e.testing.browserWSEndpoint) a = await o.connect({
browserWSEndpoint: e.testing.browserWSEndpoint,
...i
}); else {
const t = {
args: e.testing.browserArgs,
headless: e.testing.browserHeadless,
devtools: e.testing.browserDevtools,
...i
};
e.testing.browserExecutablePath && (t.executablePath = e.testing.browserExecutablePath),
a = await o.launch({
...t
});
}
return t.__STENCIL_BROWSER_WS_ENDPOINT__ = a.wsEndpoint(), e.logger.debug(`puppeteer browser wsEndpoint: ${t.__STENCIL_BROWSER_WS_ENDPOINT__}`),
a;
}
async function connectBrowser() {
const e = process.env, t = e.__STENCIL_BROWSER_WS_ENDPOINT__;
if (!t) return null;
const r = {
browserWSEndpoint: t,
ignoreHTTPSErrors: !0
}, s = require(e.__STENCIL_PUPPETEER_MODULE__);
return await s.connect(r);
}
async function disconnectBrowser(e) {
if (e) try {
e.disconnect();
} catch (e) {}
}
function newBrowserPage(e) {
return e.newPage();
}
function createJestPuppeteerEnvironment$2() {
const e = require("jest-environment-node");
return class extends e {
constructor(e) {
super(e), this.browser = null, this.pages = [];
}
async setup() {
"true" === process.env.__STENCIL_E2E_TESTS__ && (this.global.__NEW_TEST_PAGE__ = this.newPuppeteerPage.bind(this),
this.global.__CLOSE_OPEN_PAGES__ = this.closeOpenPages.bind(this));
}
async newPuppeteerPage() {
this.browser || (this.browser = await connectBrowser());
const e = await newBrowserPage(this.browser);
this.pages.push(e);
const t = process.env;
return "string" == typeof t.__STENCIL_DEFAULT_TIMEOUT__ && e.setDefaultTimeout(parseInt(t.__STENCIL_DEFAULT_TIMEOUT__, 10)),
e;
}
async closeOpenPages() {
await Promise.all(this.pages.map((e => e.close()))), this.pages.length = 0;
}
async teardown() {
await super.teardown(), await this.closeOpenPages(), await disconnectBrowser(this.browser),
this.browser = null;
}
getVmContext() {
return super.getVmContext();
}
};
}
function relative(e, t) {
return normalizePath(path__default.default.relative(e, t), !1);
}
function join(...e) {
return normalizePath(path__default.default.join(...e), !1);
}
function transpile(e, t = {}) {
var r;
t = {
...t,
componentExport: null,
componentMetadata: "compilerstatic",
coreImportPath: isString(t.coreImportPath) ? t.coreImportPath : "@stencil/core/internal/testing",
currentDirectory: t.currentDirectory || process.cwd(),
module: "cjs",
proxy: null,
sourceMap: "inline",
style: null,
styleImportData: "queryparams",
target: "es2015",
transformAliasedImportPaths: (r = process.env.__STENCIL_TRANSPILE_PATHS__, "true" === r)
};
try {
const e = process.versions.node.split(".");
parseInt(e[0], 10) >= 10 && (t.target = "es2017");
} catch (e) {}
return stencil_js.transpileSync(e, t);
}
function formatDiagnostic$2(e) {
let t = "";
return e.relFilePath && (t += e.relFilePath, "number" == typeof e.lineNumber && (t += ":" + e.lineNumber + 1,
"number" == typeof e.columnNumber && (t += ":" + e.columnNumber)), t += "\n"), t += e.messageText,
t;
}
function getCompilerOptions$2(e) {
if (_tsCompilerOptions$2) return _tsCompilerOptions$2;
if ("string" != typeof e) return null;
e = normalizePath(e);
const t = stencil_js.ts.findConfigFile(e, stencil_js.ts.sys.fileExists);
if (!t) return null;
const r = stencil_js.ts.readConfigFile(t, stencil_js.ts.sys.readFile);
if (r.error) throw new Error(formatDiagnostic$2(loadTypeScriptDiagnostic(r.error)));
const s = stencil_js.ts.parseJsonConfigFileContent(r.config, stencil_js.ts.sys, e, void 0, t);
return _tsCompilerOptions$2 = s.options, _tsCompilerOptions$2;
}
function setScreenshotEmulateData(e, t) {
const r = {
userAgent: "default",
viewport: {
width: 800,
height: 600,
deviceScaleFactor: 1,
isMobile: !1,
hasTouch: !1,
isLandscape: !1
}
};
if ("string" == typeof e.device) try {
const s = require(t.__STENCIL_PUPPETEER_MODULE__ + "/DeviceDescriptors")[e.device];
if (!s) return void console.error(`invalid emulate device: ${e.device}`);
r.device = e.device, r.userAgent = s.userAgent, r.viewport = s.viewport;
} catch (e) {
return void console.error("error loading puppeteer DeviceDescriptors", e);
}
e.viewport && ("number" == typeof e.viewport.width && (r.viewport.width = e.viewport.width),
"number" == typeof e.viewport.height && (r.viewport.height = e.viewport.height),
"number" == typeof e.viewport.deviceScaleFactor && (r.viewport.deviceScaleFactor = e.viewport.deviceScaleFactor),
"boolean" == typeof e.viewport.hasTouch && (r.viewport.hasTouch = e.viewport.hasTouch),
"boolean" == typeof e.viewport.isLandscape && (r.viewport.isLandscape = e.viewport.isLandscape),
"boolean" == typeof e.viewport.isMobile && (r.viewport.isMobile = e.viewport.isMobile),
"string" == typeof e.userAgent && (r.userAgent = e.userAgent)), t.__STENCIL_EMULATE__ = JSON.stringify(r);
}
async function runJest$2(e, t) {
let r = !1;
try {
const s = function s(e, t) {
var r, s;
let n = null !== (s = null === (r = e.emulate) || void 0 === r ? void 0 : r.slice()) && void 0 !== s ? s : [];
if ("string" == typeof t.emulate) {
const e = t.emulate.toLowerCase();
n = n.filter((t => "string" == typeof t.device && t.device.toLowerCase() === e || !("string" != typeof t.userAgent || !t.userAgent.toLowerCase().includes(e))));
}
return n;
}(e.testing, e.flags);
t.__STENCIL_EMULATE_CONFIGS__ = JSON.stringify(s), t.__STENCIL_ENV__ = JSON.stringify(e.env),
t.__STENCIL_TRANSPILE_PATHS__ = e.transformAliasedImportPaths ? "true" : "false",
e.flags.ci || e.flags.e2e ? t.__STENCIL_DEFAULT_TIMEOUT__ = "30000" : t.__STENCIL_DEFAULT_TIMEOUT__ = "15000",
e.flags.devtools && (t.__STENCIL_DEFAULT_TIMEOUT__ = "300000000"), e.logger.debug(`default timeout: ${t.__STENCIL_DEFAULT_TIMEOUT__}`);
const n = function n(e) {
const t = require("yargs"), r = e.flags.knownArgs.slice();
r.some((e => e.startsWith("--max-workers") || e.startsWith("--maxWorkers"))) || r.push(`--max-workers=${e.maxConcurrentWorkers}`),
e.flags.devtools && r.push("--runInBand");
const s = [ ...r, ...e.flags.unknownArgs ];
e.logger.info(e.logger.magenta(`jest args: ${s.join(" ")}`));
let n = t(s).argv;
if (n = {
detectLeaks: !1,
"detect-leaks": !1,
detectOpenHandles: !1,
"detect-open-handles": !1,
errorOnDeprecated: !1,
"error-on-deprecated": !1,
listTests: !1,
"list-tests": !1,
maxConcurrency: 5,
"max-concurrency": 5,
notifyMode: "failure-change",
"notify-mode": "failure-change",
passWithNoTests: !1,
"pass-with-no-tests": !1,
runTestsByPath: !1,
"run-tests-by-path": !1,
testLocationInResults: !1,
"test-location-in-results": !1,
...n
}, n.config = function o(e) {
const t = e.testing, r = require("jest-config").defaults, s = Object.keys(r), n = {};
return Object.keys(t).forEach((e => {
s.includes(e) && (n[e] = t[e]);
})), n.rootDir = e.rootDir, isString(t.collectCoverage) && (n.collectCoverage = t.collectCoverage),
Array.isArray(t.collectCoverageFrom) && (n.collectCoverageFrom = t.collectCoverageFrom),
isString(t.coverageDirectory) && (n.coverageDirectory = t.coverageDirectory), t.coverageThreshold && (n.coverageThreshold = t.coverageThreshold),
isString(t.globalSetup) && (n.globalSetup = t.globalSetup), isString(t.globalTeardown) && (n.globalTeardown = t.globalTeardown),
isString(t.preset) && (n.preset = t.preset), t.projects && (n.projects = t.projects),
Array.isArray(t.reporters) && (n.reporters = t.reporters), isString(t.testResultsProcessor) && (n.testResultsProcessor = t.testResultsProcessor),
t.transform && (n.transform = t.transform), t.verbose && (n.verbose = t.verbose),
n.testRunner = (new Jest27Stencil).getDefaultJestRunner(), JSON.stringify(n);
}(e), "string" == typeof n.maxWorkers) try {
n.maxWorkers = parseInt(n.maxWorkers, 10);
} catch (e) {}
return "string" == typeof n.ci && (n.ci = "true" === n.ci || "" === n.ci), n;
}(e), o = function o(e, t) {
const r = t.projects ? t.projects : [];
return r.push(e.rootDir), r;
}(e, n), {runCLI: i} = require("@jest/core");
r = !!(await i(n, o)).results.success;
} catch (t) {
e.logger.error(`runJest: ${t}`);
}
return r;
}
function createTestRunner$2() {
class e extends TestRunner__default.default {
async runTests(e, t, r, s, n, o) {
const i = process.env;
if (e = e.filter((e => function t(e, r) {
const s = (e = e.toLowerCase().replace(/\\/g, "/")).includes(".e2e.") || e.includes("/e2e.");
return !("true" !== r.__STENCIL_E2E_TESTS__ || !s) || "true" === r.__STENCIL_SPEC_TESTS__ && !s;
}(e.path, i))), "true" === i.__STENCIL_SCREENSHOT__ && i.__STENCIL_EMULATE_CONFIGS__) {
const a = JSON.parse(i.__STENCIL_EMULATE_CONFIGS__);
for (let l = 0; l < a.length; l++) setScreenshotEmulateData(a[l], i), await super.runTests(e, t, r, s, n, o);
} else await super.runTests(e, t, r, s, n, o);
}
}
return e;
}
async function runJestScreenshot$2(e, t) {
e.logger.debug(`screenshot connector: ${e.testing.screenshotConnector}`);
const r = new (require(e.testing.screenshotConnector)), s = path$2.join(e.sys.getCompilerExecutingPath(), "..", "..", "screenshot", "pixel-match.js");
e.logger.debug(`pixelmatch module: ${s}`);
const n = e.logger.createTimeSpan("screenshot, initBuild started", !0);
await r.initBuild({
buildId: createBuildId$2(),
buildMessage: createBuildMessage$2(),
buildTimestamp: Date.now(),
appNamespace: e.namespace,
rootDir: e.rootDir,
cacheDir: e.cacheDir,
packageDir: path$2.join(e.sys.getCompilerExecutingPath(), "..", ".."),
updateMaster: !!e.flags.updateScreenshot,
logger: e.logger,
allowableMismatchedPixels: e.testing.allowableMismatchedPixels,
allowableMismatchedRatio: e.testing.allowableMismatchedRatio,
pixelmatchThreshold: e.testing.pixelmatchThreshold,
waitBeforeScreenshot: e.testing.waitBeforeScreenshot,
pixelmatchModulePath: s
}), e.flags.updateScreenshot || await r.pullMasterBuild(), n.finish("screenshot, initBuild finished");
const o = await Promise.all([ await r.getMasterBuild(), await r.getScreenshotCache() ]), i = o[0], a = o[1];
t.__STENCIL_SCREENSHOT_BUILD__ = r.toJson(i, a);
const l = e.logger.createTimeSpan("screenshot, tests started", !0), c = await runJest$2(e, t);
l.finish(`screenshot, tests finished, passed: ${c}`);
try {
const t = e.logger.createTimeSpan("screenshot, completeTimespan started", !0);
let s = await r.completeBuild(i);
if (t.finish("screenshot, completeTimespan finished"), s) {
const t = e.logger.createTimeSpan("screenshot, publishBuild started", !0);
if (s = await r.publishBuild(s), t.finish("screenshot, publishBuild finished"),
e.flags.updateScreenshot) s.currentBuild && "string" == typeof s.currentBuild.previewUrl && e.logger.info(e.logger.magenta(s.currentBuild.previewUrl)); else if (s.compare) {
try {
await r.updateScreenshotCache(a, s);
} catch (t) {
e.logger.error(t);
}
e.logger.info(`screenshots compared: ${s.compare.diffs.length}`), "string" == typeof s.compare.url && e.logger.info(e.logger.magenta(s.compare.url));
}
}
} catch (t) {
t instanceof Error ? e.logger.error(t, t.stack) : e.logger.error(t);
}
return c;
}
function createBuildId$2() {
const e = new Date;
let t = e.getFullYear() + "";
return t += ("0" + (e.getMonth() + 1)).slice(-2), t += ("0" + e.getDate()).slice(-2),
t += ("0" + e.getHours()).slice(-2), t += ("0" + e.getMinutes()).slice(-2), t += ("0" + e.getSeconds()).slice(-2),
t;
}
function createBuildMessage$2() {
const e = new Date;
let t = e.getFullYear() + "-";
return t += ("0" + (e.getMonth() + 1)).slice(-2) + "-", t += ("0" + e.getDate()).slice(-2) + " ",
t += ("0" + e.getHours()).slice(-2) + ":", t += ("0" + e.getMinutes()).slice(-2) + ":",
t += ("0" + e.getSeconds()).slice(-2), `Build: ${t}`;
}
function setupMockFetch(e) {
const t = e.window;
"fetch" in t || (t.fetch = function(e) {
return globalMockFetch(e);
}), "fetch" in e || (e.fetch = function(e) {
return globalMockFetch(e);
});
}
async function globalMockFetch(e) {
let t;
if (null == e) throw new Error("missing url input for mock fetch()");
if ("string" == typeof e) t = e; else {
if ("string" != typeof e.url) throw new Error("invalid url for mock fetch()");
t = e.url;
}
t = new URL(t, location.href).href;
let r = mockedResponses.get(t);
if (null == r) {
const e = new URL(FETCH_DEFAULT_PATH, location.href);
r = mockedResponses.get(e.href);
}
if (null == r) return new MockResponse404;
const s = r.response.clone();
return "number" != typeof s.status && (s.status = 200), "string" != typeof s.statusText && (s.status >= 500 ? s.statusText = "Internal Server Error" : 404 === s.status ? s.statusText = "Not Found" : s.status >= 400 ? s.statusText = "Bad Request" : 302 === s.status ? s.statusText = "Found" : 301 === s.status ? s.statusText = "Moved Permanently" : s.status >= 300 ? s.statusText = "Redirection" : s.statusText = "OK"),
s.ok = s.status >= 200 && s.status <= 299, "string" != typeof s.type && (s.type = "basic"),
s;
}
function setMockedResponse(e, t, r) {
if (!e) throw new Error("MockResponse required");
"string" == typeof e.url && "" !== e.url || ("string" == typeof t ? e.url = t : t && "string" == typeof t.url ? e.url = t.url : e.url = FETCH_DEFAULT_PATH);
const s = new URL(e.url, location.href);
e.url = s.href;
const n = {
response: e,
reject: r
};
mockedResponses.set(e.url, n);
}
function resetBuildConditionals(e) {
Object.keys(e).forEach((t => {
e[t] = !0;
})), e.isDev = !0, e.isTesting = !0, e.isDebug = !1, e.lazyLoad = !0, e.member = !0,
e.reflect = !0, e.scoped = !0, e.shadowDom = !0, e.slotRelocation = !0, e.asyncLoading = !0,
e.svg = !0, e.updatable = !0, e.vdomAttribute = !0, e.vdomClass = !0, e.vdomFunctional = !0,
e.vdomKey = !0, e.vdomPropOrAttr = !0, e.vdomRef = !0, e.vdomListener = !0, e.vdomStyle = !0,
e.vdomText = !0, e.vdomXlink = !0, e.allRenderFn = !1, e.devTools = !1, e.hydrateClientSide = !1,
e.hydrateServerSide = !1, e.cssAnnotations = !1, e.style = !1, e.hydratedAttribute = !1,
e.hydratedClass = !0, e.invisiblePrehydration = !0, e.appendChildSlotFix = !1, e.cloneNodeFix = !1,
e.hotModuleReplacement = !1, e.scriptDataOpts = !1, e.scopedSlotTextContentFix = !1,
e.slotChildNodesFix = !1, e.experimentalSlotFixes = !1;
}
function toHaveClasses$2(e, t) {
if (!e) throw new Error("expect toHaveClasses value is null");
if ("function" == typeof e.then) throw new Error("element must be a resolved value, not a promise, before it can be tested");
if (1 !== e.nodeType) throw new Error("expect toHaveClasses value is not an element");
const r = t.every((t => e.classList.contains(t)));
return {
message: () => `expected to ${r ? "not " : ""}have css classes "${t.join(" ")}", but className is "${e.className}"`,
pass: r
};
}
function compareHtml$2(e, t, r) {
if (null == e) throw new Error(`expect toEqualHtml() value is "${e}"`);
if ("function" == typeof e.then) throw new Error("element must be a resolved value, not a promise, before it can be tested");
let s;
if (1 === e.nodeType) {
const t = function n(e) {
return e && e.ownerDocument && e.ownerDocument.defaultView && e.ownerDocument.defaultView.__stencil_spec_options || {};
}(e);
s = index_cjs.serializeNodeToHtml(e, {
prettyHtml: !0,
outerHtml: !0,
removeHtmlComments: !1 === t.includeAnnotations,
excludeTags: [ "body" ],
serializeShadowRoot: r
});
} else if (11 === e.nodeType) s = index_cjs.serializeNodeToHtml(e, {
prettyHtml: !0,
excludeTags: [ "style" ],
excludeTagContent: [ "style" ],
serializeShadowRoot: r
}); else {
if ("string" != typeof e) throw new Error("expect toEqualHtml() value should be an element, shadow root or string.");
{
const t = index_cjs.parseHtmlToFragment(e);
s = index_cjs.serializeNodeToHtml(t, {
prettyHtml: !0,
serializeShadowRoot: r
});
}
}
const o = index_cjs.parseHtmlToFragment(t), i = index_cjs.serializeNodeToHtml(o, {
prettyHtml: !0,
excludeTags: [ "body" ]
});
return s !== i ? (expect(s).toBe(i), {
message: () => "HTML does not match",
pass: !1
}) : {
message: () => "expect HTML to match",
pass: !0
};
}
function jestSetupTestFramework$2() {
global.resourcesUrl = "/build", expect.extend(expectExtend$2), expect.addSnapshotSerializer(HtmlSerializer$2),
index_cjs.setupGlobal(global), setupMockFetch(global), beforeEach((() => {
testing.resetPlatform(), testing.setErrorHandler(void 0), resetBuildConditionals(appData.BUILD),
testing.modeResolutionChain.length = 0;
})), afterEach((async () => {
var e, t, r, s, n, o;
global.__CLOSE_OPEN_PAGES__ && await global.__CLOSE_OPEN_PAGES__(), testing.stopAutoApplyChanges();
const i = null === (n = null === (s = null === (r = null === (t = null === (e = global.window) || void 0 === e ? void 0 : e.document) || void 0 === t ? void 0 : t.childNodes) || void 0 === r ? void 0 : r[1]) || void 0 === s ? void 0 : s.childNodes) || void 0 === n ? void 0 : n.find((e => "BODY" === e.nodeName));
null === (o = null == i ? void 0 : i.childNodes) || void 0 === o || o.forEach(removeDomNodes$2),
index_cjs.teardownGlobal(global), global.resourcesUrl = "/build";
}));
const e = jasmine.getEnv();
null != e && e.addReporter({
specStarted: e => {
global.currentSpec = e;
}
}), global.screenshotDescriptions = new Set;
const t = process.env;
if ("string" == typeof t.__STENCIL_DEFAULT_TIMEOUT__) {
const e = parseInt(t.__STENCIL_DEFAULT_TIMEOUT__, 10);
jest.setTimeout(1.5 * e), jasmine.DEFAULT_TIMEOUT_INTERVAL = e;
}
if ("string" == typeof t.__STENCIL_ENV__) {
const e = JSON.parse(t.__STENCIL_ENV__);
Object.assign(appData.Env, e);
}
}
function removeDomNodes$2(e) {
var t, r;
null != e && ((null === (t = e.childNodes) || void 0 === t ? void 0 : t.length) || e.remove(),
null === (r = e.childNodes) || void 0 === r || r.forEach(removeDomNodes$2));
}
function createJestPuppeteerEnvironment$1() {
const e = require("jest-environment-node").TestEnvironment;
return class extends e {
constructor(e, t) {
super(e, t), this.browser = null, this.pages = [], this.testPath = null, this.testPath = t.testPath;
}
async setup() {
"true" === process.env.__STENCIL_E2E_TESTS__ && (this.global.__NEW_TEST_PAGE__ = this.newPuppeteerPage.bind(this),
this.global.__CLOSE_OPEN_PAGES__ = this.closeOpenPages.bind(this));
}
async handleTestEvent(e) {
if ("test_start" === e.name) {
const t = e.test;
let r = t.name, s = t.parent;
for (;s && s.name && "ROOT_DESCRIBE_BLOCK" != s.name; ) r = `${s.name} ${r}`, s = s.parent;
this.global.currentSpec = {
description: t.name,
fullName: r,
testPath: this.testPath
};
}
}
async newPuppeteerPage() {
this.browser || (this.browser = await connectBrowser());
const e = await newBrowserPage(this.browser);
this.pages.push(e);
const t = process.env;
return "string" == typeof t.__STENCIL_DEFAULT_TIMEOUT__ && e.setDefaultTimeout(parseInt(t.__STENCIL_DEFAULT_TIMEOUT__, 10)),
e;
}
async closeOpenPages() {
await Promise.all(this.pages.map((e => e.close()))), this.pages.length = 0;
}
async teardown() {
await super.teardown(), await this.closeOpenPages(), await disconnectBrowser(this.browser),
this.browser = null;
}
getVmContext() {
return super.getVmContext();
}
};
}
function formatDiagnostic$1(e) {
let t = "";
return e.relFilePath && (t += e.relFilePath, "number" == typeof e.lineNumber && (t += ":" + e.lineNumber + 1,
"number" == typeof e.columnNumber && (t += ":" + e.columnNumber)), t += "\n"), t += e.messageText,
t;
}
function getCompilerOptions$1(e) {
if (_tsCompilerOptions$1) return _tsCompilerOptions$1;
if ("string" != typeof e) return null;
e = normalizePath(e);
const t = stencil_js.ts.findConfigFile(e, stencil_js.ts.sys.fileExists);
if (!t) return null;
const r = stencil_js.ts.readConfigFile(t, stencil_js.ts.sys.readFile);
if (r.error) throw new Error(formatDiagnostic$1(loadTypeScriptDiagnostic(r.error)));
const s = stencil_js.ts.parseJsonConfigFileContent(r.config, stencil_js.ts.sys, e, void 0, t);
return _tsCompilerOptions$1 = s.options, _tsCompilerOptions$1;
}
async function runJest$1(e, t) {
let r = !1;
try {
const s = function s(e, t) {
var r, s;
let n = null !== (s = null === (r = e.emulate) || void 0 === r ? void 0 : r.slice()) && void 0 !== s ? s : [];
if ("string" == typeof t.emulate) {
const e = t.emulate.toLowerCase();
n = n.filter((t => "string" == typeof t.device && t.device.toLowerCase() === e || !("string" != typeof t.userAgent || !t.userAgent.toLowerCase().includes(e))));
}
return n;
}(e.testing, e.flags);
t.__STENCIL_EMULATE_CONFIGS__ = JSON.stringify(s), t.__STENCIL_ENV__ = JSON.stringify(e.env),
t.__STENCIL_TRANSPILE_PATHS__ = e.transformAliasedImportPaths ? "true" : "false",
e.flags.ci || e.flags.e2e ? t.__STENCIL_DEFAULT_TIMEOUT__ = "30000" : t.__STENCIL_DEFAULT_TIMEOUT__ = "15000",
e.flags.devtools && (t.__STENCIL_DEFAULT_TIMEOUT__ = "300000000"), e.logger.debug(`default timeout: ${t.__STENCIL_DEFAULT_TIMEOUT__}`);
const n = function n(e) {
const t = require("yargs"), r = e.flags.knownArgs.slice();
r.some((e => e.startsWith("--max-workers") || e.startsWith("--maxWorkers"))) || r.push(`--max-workers=${e.maxConcurrentWorkers}`),
e.flags.devtools && r.push("--runInBand");
const s = [ ...r, ...e.flags.unknownArgs ];
e.logger.info(e.logger.magenta(`jest args: ${s.join(" ")}`));
const n = t(s).argv;
if (n.config = function o(e) {
const t = e.testing, r = require("jest-config").defaults, s = Object.keys(r), n = {};
return Object.keys(t).forEach((e => {
s.includes(e) && (n[e] = t[e]);
})), n.rootDir = e.rootDir, isString(t.collectCoverage) && (n.collectCoverage = t.collectCoverage),
Array.isArray(t.collectCoverageFrom) && (n.collectCoverageFrom = t.collectCoverageFrom),
isString(t.coverageDirectory) && (n.coverageDirectory = t.coverageDirectory), t.coverageThreshold && (n.coverageThreshold = t.coverageThreshold),
isString(t.globalSetup) && (n.globalSetup = t.globalSetup), isString(t.globalTeardown) && (n.globalTeardown = t.globalTeardown),
isString(t.preset) && (n.preset = t.preset), t.projects && (n.projects = t.projects),
Array.isArray(t.reporters) && (n.reporters = t.reporters), isString(t.testResultsProcessor) && (n.testResultsProcessor = t.testResultsProcessor),
t.transform && (n.transform = t.transform), t.verbose && (n.verbose = t.verbose),
n.testRunner = (new Jest28Stencil).getDefaultJestRunner(), JSON.stringify(n);
}(e), "string" == typeof n.maxWorkers) try {
n.maxWorkers = parseInt(n.maxWorkers, 10);
} catch (e) {}
return "string" == typeof n.ci && (n.ci = "true" === n.ci || "" === n.ci), n;
}(e), o = function o(e, t) {
const r = t.projects ? t.projects : [];
return r.push(e.rootDir), r;
}(e, n), {runCLI: i} = require("@jest/core");
r = !!(await i(n, o)).results.success;
} catch (t) {
e.logger.error(`runJest: ${t}`);
}
return r;
}
function createTestRunner$1() {
class e extends TestRunner__default.default {
async runTests(e, t, r) {
const s = process.env;
if (e = e.filter((e => function t(e, r) {
const s = (e = e.toLowerCase().replace(/\\/g, "/")).includes(".e2e.") || e.includes("/e2e.");
return !("true" !== r.__STENCIL_E2E_TESTS__ || !s) || "true" === r.__STENCIL_SPEC_TESTS__ && !s;
}(e.path, s))), "true" === s.__STENCIL_SCREENSHOT__ && s.__STENCIL_EMULATE_CONFIGS__) {
const n = JSON.parse(s.__STENCIL_EMULATE_CONFIGS__);
for (let o = 0; o < n.length; o++) setScreenshotEmulateData(n[o], s), await super.runTests(e, t, r);
} else await super.runTests(e, t, r);
}
}
return e;
}
async function runJestScreenshot$1(e, t) {
e.logger.debug(`screenshot connector: ${e.testing.screenshotConnector}`);
const r = new (require(e.testing.screenshotConnector)), s = path$2.join(e.sys.getCompilerExecutingPath(), "..", "..", "screenshot", "pixel-match.js");
e.logger.debug(`pixelmatch module: ${s}`);
const n = e.logger.createTimeSpan("screenshot, initBuild started", !0);
await r.initBuild({
buildId: createBuildId$1(),
buildMessage: createBuildMessage$1(),
buildTimestamp: Date.now(),
appNamespace: e.namespace,
rootDir: e.rootDir,
cacheDir: e.cacheDir,
packageDir: path$2.join(e.sys.getCompilerExecutingPath(), "..", ".."),
updateMaster: !!e.flags.updateScreenshot,
logger: e.logger,
allowableMismatchedPixels: e.testing.allowableMismatchedPixels,
allowableMismatchedRatio: e.testing.allowableMismatchedRatio,
pixelmatchThreshold: e.testing.pixelmatchThreshold,
waitBeforeScreenshot: e.testing.waitBeforeScreenshot,
pixelmatchModulePath: s
}), e.flags.updateScreenshot || await r.pullMasterBuild(), n.finish("screenshot, initBuild finished");
const o = await Promise.all([ await r.getMasterBuild(), await r.getScreenshotCache() ]), i = o[0], a = o[1];
t.__STENCIL_SCREENSHOT_BUILD__ = r.toJson(i, a);
const l = e.logger.createTimeSpan("screenshot, tests started", !0), c = await runJest$1(e, t);
l.finish(`screenshot, tests finished, passed: ${c}`);
try {
const t = e.logger.createTimeSpan("screenshot, completeTimespan started", !0);
let s = await r.completeBuild(i);
if (t.finish("screenshot, completeTimespan finished"), s) {
const t = e.logger.createTimeSpan("screenshot, publishBuild started", !0);
if (s = await r.publishBuild(s), t.finish("screenshot, publishBuild finished"),
e.flags.updateScreenshot) s.currentBuild && "string" == typeof s.currentBuild.previewUrl && e.logger.info(e.logger.magenta(s.currentBuild.previewUrl)); else if (s.compare) {
try {
await r.updateScreenshotCache(a, s);
} catch (t) {
e.logger.error(t);
}
e.logger.info(`screenshots compared: ${s.compare.diffs.length}`), "string" == typeof s.compare.url && e.logger.info(e.logger.magenta(s.compare.url));
}
}
} catch (t) {
t instanceof Error ? e.logger.error(t, t.stack) : e.logger.error(t);
}
return c;
}
function createBuildId$1() {
const e = new Date;
let t = e.getFullYear() + "";
return t += ("0" + (e.getMonth() + 1)).slice(-2), t += ("0" + e.getDate()).slice(-2),
t += ("0" + e.getHours()).slice(-2), t += ("0" + e.getMinutes()).slice(-2), t += ("0" + e.getSeconds()).slice(-2),
t;
}
function createBuildMessage$1() {
const e = new Date;
let t = e.getFullYear() + "-";
return t += ("0" + (e.getMonth() + 1)).slice(-2) + "-", t += ("0" + e.getDate()).slice(-2) + " ",
t += ("0" + e.getHours()).slice(-2) + ":", t += ("0" + e.getMinutes()).slice(-2) + ":",
t += ("0" + e.getSeconds()).slice(-2), `Build: ${t}`;
}
function toHaveClasses$1(e, t) {
if (!e) throw new Error("expect toHaveClasses value is null");
if ("function" == typeof e.then) throw new Error("element must be a resolved value, not a promise, before it can be tested");
if (1 !== e.nodeType) throw new Error("expect toHaveClasses value is not an element");
const r = t.every((t => e.classList.contains(t)));
return {
message: () => `expected to ${r ? "not " : ""}have css classes "${t.join(" ")}", but className is "${e.className}"`,
pass: r
};
}
function compareHtml$1(e, t, r) {
if (null == e) throw new Error(`expect toEqualHtml() value is "${e}"`);
if ("function" == typeof e.then) throw new Error("element must be a resolved value, not a promise, before it can be tested");
let s;
if (1 === e.nodeType) {
const t = function n(e) {
return e && e.ownerDocument && e.ownerDocument.defaultView && e.ownerDocument.defaultView.__stencil_spec_options || {};
}(e);
s = index_cjs.serializeNodeToHtml(e, {
prettyHtml: !0,
outerHtml: !0,
removeHtmlComments: !1 === t.includeAnnotations,
excludeTags: [ "body" ],
serializeShadowRoot: r
});
} else if (11 === e.nodeType) s = index_cjs.serializeNodeToHtml(e, {
prettyHtml: !0,
excludeTags: [ "style" ],
excludeTagContent: [ "style" ],
serializeShadowRoot: r
}); else {
if ("string" != typeof e) throw new Error("expect toEqualHtml() value should be an element, shadow root or string.");
{
const t = index_cjs.parseHtmlToFragment(e);
s = index_cjs.serializeNodeToHtml(t, {
prettyHtml: !0,
serializeShadowRoot: r
});
}
}
const o = index_cjs.parseHtmlToFragment(t), i = index_cjs.serializeNodeToHtml(o, {
prettyHtml: !0,
excludeTags: [ "body" ]
});
return s !== i ? (expect(s).toBe(i), {
message: () => "HTML does not match",
pass: !1
}) : {
message: () => "expect HTML to match",
pass: !0
};
}
function jestSetupTestFramework$1() {
global.resourcesUrl = "/build", expect.extend(expectExtend$1), expect.addSnapshotSerializer(HtmlSerializer$1),
index_cjs.setupGlobal(global), setupMockFetch(global), beforeEach((() => {
testing.resetPlatform(), testing.setErrorHandler(void 0), resetBuildConditionals(appData.BUILD),
testing.modeResolutionChain.length = 0;
})), afterEach((async () => {
var e, t, r, s, n, o;
global.__CLOSE_OPEN_PAGES__ && await global.__CLOSE_OPEN_PAGES__(), testing.stopAutoApplyChanges();
const i = null === (n = null === (s = null === (r = null === (t = null === (e = global.window) || void 0 === e ? void 0 : e.document) || void 0 === t ? void 0 : t.childNodes) || void 0 === r ? void 0 : r[1]) || void 0 === s ? void 0 : s.childNodes) || void 0 === n ? void 0 : n.find((e => "BODY" === e.nodeName));
null === (o = null == i ? void 0 : i.childNodes) || void 0 === o || o.forEach(removeDomNodes$1),
index_cjs.teardownGlobal(global), global.resourcesUrl = "/build";
})), global.screenshotDescriptions = new Set;
const e = process.env;
if ("string" == typeof e.__STENCIL_DEFAULT_TIMEOUT__) {
const t = parseInt(e.__STENCIL_DEFAULT_TIMEOUT__, 10);
jest.setTimeout(1.5 * t);
}
if ("string" == typeof e.__STENCIL_ENV__) {
const t = JSON.parse(e.__STENCIL_ENV__);
Object.assign(appData.Env, t);
}
}
function removeDomNodes$1(e) {
var t, r;
null != e && ((null === (t = e.childNodes) || void 0 === t ? void 0 : t.length) || e.remove(),
null === (r = e.childNodes) || void 0 === r || r.forEach(removeDomNodes$1));
}
function createJestPuppeteerEnvironment() {
const e = require("jest-environment-node").TestEnvironment;
return class extends e {
constructor(e, t) {
super(e, t), this.browser = null, this.pages = [], this.testPath = null, this.testPath = t.testPath;
}
async setup() {
"true" === process.env.__STENCIL_E2E_TESTS__ && (this.global.__NEW_TEST_PAGE__ = this.newPuppeteerPage.bind(this),
this.global.__CLOSE_OPEN_PAGES__ = this.closeOpenPages.bind(this));
}
async handleTestEvent(e) {
if ("test_start" === e.name) {
const t = e.test;
let r = t.name, s = t.parent;
for (;s && s.name && "ROOT_DESCRIBE_BLOCK" != s.name; ) r = `${s.name} ${r}`, s = s.parent;
this.global.currentSpec = {
description: t.name,
fullName: r,
testPath: this.testPath
};
}
}
async newPuppeteerPage() {
this.browser || (this.browser = await connectBrowser());
const e = await newBrowserPage(this.browser);
this.pages.push(e);
const t = process.env;
return "string" == typeof t.__STENCIL_DEFAULT_TIMEOUT__ && e.setDefaultTimeout(parseInt(t.__STENCIL_DEFAULT_TIMEOUT__, 10)),
e;
}
async closeOpenPages() {
await Promise.all(this.pages.map((e => e.close()))), this.pages.length = 0;
}
async teardown() {
await super.teardown(), await this.closeOpenPages(), await disconnectBrowser(this.browser),
this.browser = null;
}
getVmContext() {
return super.getVmContext();
}
};
}
function formatDiagnostic(e) {
let t = "";
return e.relFilePath && (t += e.relFilePath, "number" == typeof e.lineNumber && (t += ":" + e.lineNumber + 1,
"number" == typeof e.columnNumber && (t += ":" + e.columnNumber)), t += "\n"), t += e.messageText,
t;
}
function getCompilerOptions(e) {
if (_tsCompilerOptions) return _tsCompilerOptions;
if ("string" != typeof e) return null;
e = normalizePath(e);
const t = stencil_js.ts.findConfigFile(e, stencil_js.ts.sys.fileExists);
if (!t) return null;
const r = stencil_js.ts.readConfigFile(t, stencil_js.ts.sys.readFile);
if (r.error) throw new Error(formatDiagnostic(loadTypeScriptDiagnostic(r.error)));
const s = stencil_js.ts.parseJsonConfigFileContent(r.config, stencil_js.ts.sys, e, void 0, t);
return _tsCompilerOptions = s.options, _tsCompilerOptions;
}
async function runJest(e, t) {
let r = !1;
try {
const s = function s(e, t) {
var r, s;
let n = null !== (s = null === (r = e.emulate) || void 0 === r ? void 0 : r.slice()) && void 0 !== s ? s : [];
if ("string" == typeof t.emulate) {
const e = t.emulate.toLowerCase();
n = n.filter((t => "string" == typeof t.device && t.device.toLowerCase() === e || !("string" != typeof t.userAgent || !t.userAgent.toLowerCase().includes(e))));
}
return n;
}(e.testing, e.flags);
t.__STENCIL_EMULATE_CONFIGS__ = JSON.stringify(s), t.__STENCIL_ENV__ = JSON.stringify(e.env),
t.__STENCIL_TRANSPILE_PATHS__ = e.transformAliasedImportPaths ? "true" : "false",
e.flags.ci || e.flags.e2e ? t.__STENCIL_DEFAULT_TIMEOUT__ = "30000" : t.__STENCIL_DEFAULT_TIMEOUT__ = "15000",
e.flags.devtools && (t.__STENCIL_DEFAULT_TIMEOUT__ = "300000000"), e.logger.debug(`default timeout: ${t.__STENCIL_DEFAULT_TIMEOUT__}`);
const n = function n(e) {
const t = require("yargs"), r = e.flags.knownArgs.slice();
r.some((e => e.startsWith("--max-workers") || e.startsWith("--maxWorkers"))) || r.push(`--max-workers=${e.maxConcurrentWorkers}`),
e.flags.devtools && r.push("--runInBand");
const s = [ ...r, ...e.flags.unknownArgs ];
e.logger.info(e.logger.magenta(`jest args: ${s.join(" ")}`));
const n = t(s).argv;
if (n.config = function o(e) {
const t = e.testing, r = require("jest-config").defaults, s = Object.keys(r), n = {};
return Object.keys(t).forEach((e => {
s.includes(e) && (n[e] = t[e]);
})), n.rootDir = e.rootDir, isString(t.collectCoverage) && (n.collectCoverage = t.collectCoverage),
Array.isArray(t.collectCoverageFrom) && (n.collectCoverageFrom = t.collectCoverageFrom),
isString(t.coverageDirectory) && (n.coverageDirectory = t.coverageDirectory), t.coverageThreshold && (n.coverageThreshold = t.coverageThreshold),
isString(t.globalSetup) && (n.globalSetup = t.globalSetup), isString(t.globalTeardown) && (n.globalTeardown = t.globalTeardown),
isString(t.preset) && (n.preset = t.preset), t.projects && (n.projects = t.projects),
Array.isArray(t.reporters) && (n.reporters = t.reporters), isString(t.testResultsProcessor) && (n.testResultsProcessor = t.testResultsProcessor),
t.transform && (n.transform = t.transform), t.verbose && (n.verbose = t.verbose),
n.testRunner = (new Jest29Stencil).getDefaultJestRunner(), JSON.stringify(n);
}(e), "string" == typeof n.maxWorkers) try {
n.maxWorkers = parseInt(n.maxWorkers, 10);
} catch (e) {}
return "string" == typeof n.ci && (n.ci = "true" === n.ci || "" === n.ci), n;
}(e), o = function o(e, t) {
const r = t.projects ? t.projects : [];
return r.push(e.rootDir), r;
}(e, n), {runCLI: i} = require("@jest/core");
r = !!(await i(n, o)).results.success;
} catch (t) {
e.logger.error(`runJest: ${t}`);
}
return r;
}
function createTestRunner() {
class e extends TestRunner__default.default {
async runTests(e, t, r) {
const s = process.env;
if (e = e.filter((e => function t(e, r) {
const s = (e = e.toLowerCase().replace(/\\/g, "/")).includes(".e2e.") || e.includes("/e2e.");
return !("true" !== r.__STENCIL_E2E_TESTS__ || !s) || "true" === r.__STENCIL_SPEC_TESTS__ && !s;
}(e.path, s))), "true" === s.__STENCIL_SCREENSHOT__ && s.__STENCIL_EMULATE_CONFIGS__) {
const n = JSON.parse(s.__STENCIL_EMULATE_CONFIGS__);
for (let o = 0; o < n.length; o++) setScreenshotEmulateData(n[o], s), await super.runTests(e, t, r);
} else await super.runTests(e, t, r);
}
}
return e;
}
async function runJestScreenshot(e, t) {
e.logger.debug(`screenshot connector: ${e.testing.screenshotConnector}`);
const r = new (require(e.testing.screenshotConnector)), s = path$2.join(e.sys.getCompilerExecutingPath(), "..", "..", "screenshot", "pixel-match.js");
e.logger.debug(`pixelmatch module: ${s}`);
const n = e.logger.createTimeSpan("screenshot, initBuild started", !0);
await r.initBuild({
buildId: createBuildId(),
buildMessage: createBuildMessage(),
buildTimestamp: Date.now(),
appNamespace: e.namespace,
rootDir: e.rootDir,
cacheDir: e.cacheDir,
packageDir: path$2.join(e.sys.getCompilerExecutingPath(), "..", ".."),
updateMaster: !!e.flags.updateScreenshot,
logger: e.logger,
allowableMismatchedPixels: e.testing.allowableMismatchedPixels,
allowableMismatchedRatio: e.testing.allowableMismatchedRatio,
pixelmatchThreshold: e.testing.pixelmatchThreshold,
waitBeforeScreenshot: e.testing.waitBeforeScreenshot,
pixelmatchModulePath: s
}), e.flags.updateScreenshot || await r.pullMasterBuild(), n.finish("screenshot, initBuild finished");
const o = await Promise.all([ await r.getMasterBuild(), await r.getScreenshotCache() ]), i = o[0], a = o[1];
t.__STENCIL_SCREENSHOT_BUILD__ = r.toJson(i, a);
const l = e.logger.createTimeSpan("screenshot, tests started", !0), c = await runJest(e, t);
l.finish(`screenshot, tests finished, passed: ${c}`);
try {
const t = e.logger.createTimeSpan("screenshot, completeTimespan started", !0);
let s = await r.completeBuild(i);
if (t.finish("screenshot, completeTimespan finished"), s) {
const t = e.logger.createTimeSpan("screenshot, publishBuild started", !0);
if (s = await r.publishBuild(s), t.finish("screenshot, publishBuild finished"),
e.flags.updateScreenshot) s.currentBuild && "string" == typeof s.currentBuild.previewUrl && e.logger.info(e.logger.magenta(s.currentBuild.previewUrl)); else if (s.compare) {
try {
await r.updateScreenshotCache(a, s);
} catch (t) {
e.logger.error(t);
}
e.logger.info(`screenshots compared: ${s.compare.diffs.length}`), "string" == typeof s.compare.url && e.logger.info(e.logger.magenta(s.compare.url));
}
}
} catch (t) {
t instanceof Error ? e.logger.error(t, t.stack) : e.logger.error(t);
}
return c;
}
function createBuildId() {
const e = new Date;
let t = e.getFullYear() + "";
return t += ("0" + (e.getMonth() + 1)).slice(-2), t += ("0" + e.getDate()).slice(-2),
t += ("0" + e.getHours()).slice(-2), t += ("0" + e.getMinutes()).slice(-2), t += ("0" + e.getSeconds()).slice(-2),
t;
}
function createBuildMessage() {
const e = new Date;
let t = e.getFullYear() + "-";
return t += ("0" + (e.getMonth() + 1)).slice(-2) + "-", t += ("0" + e.getDate()).slice(-2) + " ",
t += ("0" + e.getHours()).slice(-2) + ":", t += ("0" + e.getMinutes()).slice(-2) + ":",
t += ("0" + e.getSeconds()).slice(-2), `Build: ${t}`;
}
function toHaveClasses(e, t) {
if (!e) throw new Error("expect toHaveClasses value is null");
if ("function" == typeof e.then) throw new Error("element must be a resolved value, not a promise, before it can be tested");
if (1 !== e.nodeType) throw new Error("expect toHaveClasses value is not an element");
const r = t.every((t => e.classList.contains(t)));
return {
message: () => `expected to ${r ? "not " : ""}have css classes "${t.join(" ")}", but className is "${e.className}"`,
pass: r
};
}
function compareHtml(e, t, r) {
if (null == e) throw new Error(`expect toEqualHtml() value is "${e}"`);
if ("function" == typeof e.then) throw new Error("element must be a resolved value, not a promise, before it can be tested");
let s;
if (1 === e.nodeType) {
const t = function n(e) {
return e && e.ownerDocument && e.ownerDocument.defaultView && e.ownerDocument.defaultView.__stencil_spec_options || {};
}(e);
s = index_cjs.serializeNodeToHtml(e, {
prettyHtml: !0,
outerHtml: !0,
removeHtmlComments: !1 === t.includeAnnotations,
excludeTags: [ "body" ],
serializeShadowRoot: r
});
} else if (11 === e.nodeType) s = index_cjs.serializeNodeToHtml(e, {
prettyHtml: !0,
excludeTags: [ "style" ],
excludeTagContent: [ "style" ],
serializeShadowRoot: r
}); else {
if ("string" != typeof e) throw new Error("expect toEqualHtml() value should be an element, shadow root or string.");
{
const t = index_cjs.parseHtmlToFragment(e);
s = index_cjs.serializeNodeToHtml(t, {
prettyHtml: !0,
serializeShadowRoot: r
});
}
}
const o = index_cjs.parseHtmlToFragment(t), i = index_cjs.serializeNodeToHtml(o, {
prettyHtml: !0,
excludeTags: [ "body" ]
});
return s !== i ? (expect(s).toBe(i), {
message: () => "HTML does not match",
pass: !1
}) : {
message: () => "expect HTML to match",
pass: !0
};
}
function jestSetupTestFramework() {
global.resourcesUrl = "/build", expect.extend(expectExtend), expect.addSnapshotSerializer(HtmlSerializer),
index_cjs.setupGlobal(global), setupMockFetch(global), beforeEach((() => {
testing.resetPlatform(), testing.setErrorHandler(void 0), resetBuildConditionals(appData.BUILD),
testing.modeResolutionChain.length = 0;
})), afterEach((async () => {
var e, t, r, s, n, o;
global.__CLOSE_OPEN_PAGES__ && await global.__CLOSE_OPEN_PAGES__(), testing.stopAutoApplyChanges();
const i = null === (n = null === (s = null === (r = null === (t = null === (e = global.window) || void 0 === e ? void 0 : e.document) || void 0 === t ? void 0 : t.childNodes) || void 0 === r ? void 0 : r[1]) || void 0 === s ? void 0 : s.childNodes) || void 0 === n ? void 0 : n.find((e => "BODY" === e.nodeName));
null === (o = null == i ? void 0 : i.childNodes) || void 0 === o || o.forEach(removeDomNodes),
index_cjs.teardownGlobal(global), global.resourcesUrl = "/build";
})), global.screenshotDescriptions = new Set;
const e = process.env;
if ("string" == typeof e.__STENCIL_DEFAULT_TIMEOUT__) {
const t = parseInt(e.__STENCIL_DEFAULT_TIMEOUT__, 10);
jest.setTimeout(1.5 * t);
}
if ("string" == typeof e.__STENCIL_ENV__) {
const t = JSON.parse(e.__STENCIL_ENV__);
Object.assign(appData.Env, t);
}
}
function removeDomNodes(e) {
var t, r;
null != e && ((null === (t = e.childNodes) || void 0 === t ? void 0 : t.length) || e.remove(),
null === (r = e.childNodes) || void 0 === r || r.forEach(removeDomNodes));
}
function specifierIncluded$1(e, t) {
var r, s, n, o = e.split("."), i = t.split(" "), a = i.length > 1 ? i[0] : "=", l = (i.length > 1 ? i[1] : i[0]).split(".");
for (r = 0; r < 3; ++r) if ((s = parseInt(o[r] || 0, 10)) !== (n = parseInt(l[r] || 0, 10))) return "<" === a ? s < n : ">=" === a && s >= n;
return ">=" === a;
}
function matchesRange$1(e, t) {
var r, s = t.split(/ ?&& ?/);
if (0 === s.length) return !1;
for (r = 0; r < s.length; ++r) if (!specifierIncluded$1(e, s[r])) return !1;
return !0;
}
function specifierIncluded(e) {
var t, r, s, n = e.split(" "), o = n.length > 1 ? n[0] : "=", i = (n.length > 1 ? n[1] : n[0]).split(".");
for (t = 0; t < 3; ++t) if ((r = parseInt(current[t] || 0, 10)) !== (s = parseInt(i[t] || 0, 10))) return "<" === o ? r < s : ">=" === o && r >= s;
return ">=" === o;
}
function matchesRange(e) {
var t, r = e.split(/ ?&& ?/);
if (0 === r.length) return !1;
for (t = 0; t < r.length; ++t) if (!specifierIncluded(r[t])) return !1;
return !0;
}
function versionIncluded(e) {
if ("boolean" == typeof e) return e;
if (e && "object" == typeof e) {
for (var t = 0; t < e.length; ++t) if (matchesRange(e[t])) return !0;
return !1;
}
return matchesRange(e);
}
function mockValidatedConfig(e = {}) {
var t;
const r = mockConfig(e), s = path__default.default.resolve("/");
return {
...r,
devMode: !0,
devServer: {},
extras: {},
flags: createConfigFlags(),
fsNamespace: "testing",
hydratedFlag: null,
logLevel: "info",
logger: mockLogger(),
namespace: "Testing",
outputTargets: null !== (t = r.outputTargets) && void 0 !== t ? t : [],
packageJsonFilePath: path__default.default.join(s, "package.json"),
rootDir: s,
cacheDir: ".stencil",
srcIndexHtml: "src/index.html",
srcDir: "/src",
sys: createTestingSystem(),
testing: {},
transformAliasedImportPaths: !0,
rollupConfig: {
inputOptions: {},
outputOptions: {}
},
validatePrimaryPackageOutputTarget: !1,
...e
};
}
function mockConfig(e = {}) {
const t = path__default.default.resolve("/");
let {sys: r} = e;
return r || (r = createTestingSystem()), r.getCurrentDirectory = () => t, {
_isTesting: !0,
buildAppCore: !1,
buildDist: !0,
buildEs5: !1,
bundles: null,
devMode: !0,
enableCache: !1,
extras: {},
flags: createConfigFlags(),
globalScript: null,
hashFileNames: !1,
logger: new TestingLogger,
maxConcurrentWorkers: 0,
minifyCss: !1,
minifyJs: !1,
namespace: "Testing",
nodeResolve: {
customResolveOptions: {}
},
outputTargets: null,
rollupPlugins: {
before: [],
after: []
},
rootDir: t,
sourceMap: !0,
sys: r,
testing: null,
validateTypes: !1,
...e
};
}
function mockCompilerCtx(e) {
const t = e || mockValidatedConfig(), r = {
version: 1,
activeBuildId: 0,
activeDirsAdded: [],
activeDirsDeleted: [],
activeFilesAdded: [],
activeFilesDeleted: [],
activeFilesUpdated: [],
addWatchDir: noop,
addWatchFile: noop,
cachedGlobalStyle: null,
changedFiles: new Set,
changedModules: new Set,
collections: [],
compilerOptions: null,
cache: null,
cssModuleImports: new Map,
events: buildEvents(),
fs: null,
hasSuccessfulBuild: !1,
isActivelyBuilding: !1,
lastBuildResults: null,
moduleMap: new Map,
nodeMap: new WeakMap,
reset: noop,
resolvedCollections: new Set,
rollupCache: new Map,
rollupCacheHydrate: null,
rollupCacheLazy: null,
rollupCacheNative: null,
styleModeNames: new Set,
worker: stencil_js.createWorkerContext(t.sys)
};
return Object.defineProperty(r, "fs", {
get() {
return null == this._fs && (this._fs = createInMemoryFs(t.sys)), this._fs;
}
}), Object.defineProperty(r, "cache", {
get() {
return null == this._cache && (this._cache = function e(t, r) {
t.enableCache = !0;
const s = new Cache(t, r.fs);
return s.initCacheDir(), s;
}(t, r)), this._cache;
}
}), r;
}
function mockLogger() {
return new TestingLogger;
}
async function initPageEvents(e) {
e._e2eEvents = new Map, e._e2eEventIds = 0, e.spyOnEvent = pageSpyOnEvent.bind(e, e),
await e.exposeFunction("stencilOnEvent", ((t, r) => {
!function s(e, t, r) {
const s = e.get(t);
s && s.callback(r);
}(e._e2eEvents, t, r);
})), await e.evaluateOnNewDocument(browserContextEvents);
}
async function pageSpyOnEvent(e, t, r) {
const s = new EventSpy(t), n = "document" !== r ? () => window : () => document, o = await e.evaluateHandle(n);
return await addE2EListener(e, o, t, (e => {
s.push(e);
})), s;
}
async function waitForEvent(e, t, r) {
const s = "undefined" != typeof jasmine && jasmine.DEFAULT_TIMEOUT_INTERVAL ? .5 * jasmine.DEFAULT_TIMEOUT_INTERVAL : 2500, n = await e.evaluate(((e, t, r) => new Promise(((s, n) => {
const o = setTimeout((() => {
n(new Error(`waitForEvent() timeout, eventName: ${t}`));
}), r);
e.addEventListener(t, (e => {
clearTimeout(o), s(window.stencilSerializeEvent(e));
}), {
once: !0
});
}))), r, t, s);
return await e.waitForChanges(), n;
}
async function addE2EListener(e, t, r, s) {
const n = e._e2eEve