@adobe/helix-pipeline
Version:
This project provides helper functions and default implementations for creating Hypermedia Processing Pipelines.
432 lines (431 loc) • 46.6 kB
text/xml
<testsuite name="Mocha Tests" tests="429" failures="0" errors="0" skipped="3" timestamp="Wed, 23 Feb 2022 11:30:21 GMT" time="48.429">
<testcase classname="Cache Helper Tests (surrogate)" name="directive parses directives" time="0.001"/>
<testcase classname="Cache Helper Tests (surrogate)" name="format formats directives" time="0"/>
<testcase classname="Cache Helper Tests (surrogate)" name="merge merges two directives" time="0"/>
<testcase classname="Test check-xml" name="validates proper XML" time="0.006"/>
<testcase classname="Test check-xml" name="throws error on improper XML" time="0.001"/>
<testcase classname="Test check-xml" name="does nothing with empty response body" time="0"/>
<testcase classname="Test Coercing Secrets" name="Secrets will be created" time="0.096"/>
<testcase classname="Test Coercing Secrets" name="Defaults have correct values" time="0"/>
<testcase classname="Test Coercing Secrets" name="Defaults have correct types (boolean)" time="0.001"/>
<testcase classname="Test Coercing Secrets" name="Secrets have correct types (boolean)" time="0"/>
<testcase classname="Integration Test Section Strain Filtering" name="html.pipe sees only selected section" time="0.371"/>
<testcase classname="Unit Test Section Strain Filtering" name="Works with empty section lists" time="0"/>
<testcase classname="Unit Test Section Strain Filtering" name="Filters sections based on strain" time="0"/>
<testcase classname="Unit Test Section Strain Filtering" name="Filters sections based on strain (array)" time="0.001"/>
<testcase classname="Unit Test Section Strain Filtering" name="Keeps sections without a strain" time="0"/>
<testcase classname="Unit Test Section Strain Filtering" name="Keeps sections without metadata" time="0.001"/>
<testcase classname="Unit Test Section Strain Filtering" name="Filters strain a" time="0"/>
<testcase classname="Select Sections for Testing #unit" name="Works with empty section lists" time="0"/>
<testcase classname="Select Sections for Testing #unit" name="Works with single test variants" time="0.003"/>
<testcase classname="Select Sections for Testing #unit" name="Works with multiple test variants" time="0"/>
<testcase classname="Pick among possible candidate sections #unit" name="Works with empty candidate lists" time="0"/>
<testcase classname="Pick among possible candidate sections #unit" name="Picks a candidate for each group" time="0.015"/>
<testcase classname="Pick among possible candidate sections #unit" name="Picks a different candidate for each strain" time="0.003"/>
<testcase classname="Integration Test A/B Testing" name="html.pipe sees only one variant" time="0.069"/>
<testcase classname="Integration Test A/B Testing" name="variant in html.pipe differs from strain to strain" time="0.246"/>
<testcase classname="Test Pagination Helper #unit" name="Does not filter when no parameters given" time="0"/>
<testcase classname="Test Pagination Helper #unit" name="Returns first page when no page is given" time="0"/>
<testcase classname="Test Pagination Helper #unit" name="Returns second page when asked" time="0"/>
<testcase classname="Test Pagination Helper #unit" name="Returns (incomplete) third page when asked" time="0"/>
<testcase classname="Test Pagination Helper #unit" name="Returns (complete) third page when page" time="0.001"/>
<testcase classname="Test URI parsing and construction" name="computeGithubURI constructs URIs" time="0"/>
<testcase classname="Test URI parsing and construction" name="computeGithubURI deals with trailing slashes" time="0"/>
<testcase classname="Test URI parsing and construction" name="computeGithubURI deals with leading slashes" time="0"/>
<testcase classname="Test URI parsing and construction" name="computeGithubURI deals with slashes in refs" time="0.001"/>
<testcase classname="Test URI parsing and construction" name="computeGithubURI deals with ugly slashes in refs" time="0"/>
<testcase classname="Test URI parsing and construction" name="computeGithubURI deals with ugly slashes in owner" time="0.001"/>
<testcase classname="Test URI parsing and construction" name="computeGithubURI deals with ugly slashes in repo" time="0"/>
<testcase classname="Test URI parsing and construction" name="computeGithubURI generates github pages uri" time="0.001"/>
<testcase classname="Test input validation" name="fetch fails if no uri" time="0.001"/>
<testcase classname="Test input validation" name="fetchGithub fails if no owner" time="0.001"/>
<testcase classname="Test input validation" name="fetchGithub fails if no repo" time="0"/>
<testcase classname="Test input validation" name="fetchGithub fails if no path" time="0"/>
<testcase classname="Test input validation" name="fetchGithub warns if no HTTP_TIMEOUT" time="0"/>
<testcase classname="Test Download" name="can suppress 404 error." time="0.021"/>
<testcase classname="Test Download" name="throws on 404 error if desired." time="0.017"/>
<testcase classname="Test Download" name="can schedule downloads in parallel" time="0.113"/>
<testcase classname="Test Download" name="can retrieve a task by id" time="0.017"/>
<testcase classname="Test Download" name="caches response" time="0.018"/>
<testcase classname="Test Download" name="can disable cache response" time="0.021"/>
<testcase classname="Test Download" name="forward default headers only" time="0.076"/>
<testcase classname="Test Download" name="forwards the transaction id" time="0.077"/>
<testcase classname="Test Download" name="forward only specified headers" time="0.074"/>
<testcase classname="Test Temp Context Dumper" name="Writes context dump on loglevel silly" time="0.005"/>
<testcase classname="Test Temp Context Dumper" name="does not write on loglevel debug" time="0"/>
<testcase classname="Test Embed Handler" name="Creates ESI" time="0.001"/>
<testcase classname="Integration Test with Embeds" name="html.pipe does not blow up "embeds" from Helix Not Slides when seeing mailto links" time="0.335"/>
<testcase classname="Integration Test with Embeds" name="html.pipe does not detect IA "embeds" in normal youtube links" time="0.073"/>
<testcase classname="Integration Test with Embeds" name="html.pipe processes embeds" time="0.116"/>
<testcase classname="Integration Test with Embeds" name="html.pipe processes internal embeds" time="0.101"/>
<testcase classname="Test emit-json" name="builds JSON from object" time="0.001"/>
<testcase classname="Test emit-json" name="does nothing if no JSON object specified" time="0"/>
<testcase classname="Test emit-json" name="keeps existing response body" time="0.001"/>
<testcase classname="Test emit-json" name="handles missing response object" time="0"/>
<testcase classname="Test emit-json" name="handles missing content object" time="0.001"/>
<testcase classname="Test emit-xml" name="builds XML from object" time="0.005"/>
<testcase classname="Test emit-xml" name="builds pretty XML from object" time="0.001"/>
<testcase classname="Test emit-xml" name="does nothing if no XML object specified" time="0"/>
<testcase classname="Test emit-xml" name="keeps existing response body" time="0.001"/>
<testcase classname="Test emit-xml" name="handles missing response object" time="0"/>
<testcase classname="Integration Test with Data Embeds" name="html.pipe handles non-JSON responses gracefully" time="0.196"/>
<testcase classname="Integration Test with Data Embeds" name="html.pipe handles non-Array responses gracefully" time="0.143"/>
<testcase classname="Integration Test with Data Embeds" name="data embeds generate a surrogate key" time="0.343"/>
<testcase classname="Integration Test with Data Embeds" name="html.pipe processes data embeds in main document" time="0.129"/>
<testcase classname="Integration Test with Data Embeds" name="html.pipe processes data embeds that generate new embeds" time="0.146"/>
<testcase classname="Integration Test with Data Embeds" name="html.pipe supports data embed pagination" time="0.187"/>
<testcase classname="Integration Test with Data Embeds" name="html.pipe processes data embeds in new data format" time="0.208"/>
<testcase classname="Integration Test with Data Embeds" name="html.pipe processes data embeds with dot notation" time="0.144"/>
<testcase classname="Integration Test with Data Embeds" name="html.pipe processes data embeds in sections" time="0.14"/>
<testcase classname="Integration Test with Data Embeds" name="html.pipe handles error responses gracefully" time="0.087"/>
<testcase classname="Integration Test with Data Embeds" name="embed processing works with big files, even when there are few embeds" time="8.92"/>
<testcase classname="Integration Test with Data Embeds" name="embed processing works with big files, even when there are no embeds" time="6.966"/>
<testcase classname="Integration Test with Data Embeds" name="html.pipe handles error responses gracefully" time="0.082"/>
<testcase classname="Integration Test with Data Embeds" name="test various embed format" time="0.391"/>
<testcase classname="Integration Test with Data Embeds" name="test large dataset - should not take more than 20s for 5k dataset" time="15.255"/>
<testcase classname="Integration Test with Data Embeds (resolver)" name="html.pipe processes data embeds" time="0.123"/>
<testcase classname="Test invalid input" name="Test for missing owner" time="0"/>
<testcase classname="Test invalid input" name="Test for missing repo" time="0.002"/>
<testcase classname="Test invalid input" name="Test for missing path" time="0.001"/>
<testcase classname="Test invalid input" name="Test for missing params" time="0"/>
<testcase classname="Test invalid input" name="Test for missing request" time="0.001"/>
<testcase classname="Test non-existing content" name="Getting XDM README (from wrong URL)" time="0.021"/>
<testcase classname="Test non-existing content" name="Getting XDM README (with missing ref)" time="0.022"/>
<testcase classname="Test requests" name="Getting XDM README" time="0.019"/>
<testcase classname="Test requests" name="Getting README from private repo with GitHub token" time="0.039"/>
<testcase classname="Test misbehaved HTTP Responses" name="Getting XDM README with bad HTTP Status Code" time="0.023"/>
<testcase classname="Test misbehaved HTTP Responses" name="Getting XDM README with ultra-short Timeout" time="0.012"/>
<testcase classname="Test misbehaved HTTP Responses" name="Getting XDM README with Backend Timeout" time="1.003"/>
<testcase classname="Test Embed Detection Processing" name="Parses markdown with embeds" time="0.027"/>
<testcase classname="Test Embed Detection Processing" name="Parses markdown with embeds from word2md" time="0.007"/>
<testcase classname="Test Embed Detection Processing" name="Parses markdown with embeds from gdocs2md" time="0.009"/>
<testcase classname="Validate Embed Examples In Pipeline" name="Markdown with embeds yields valid context" time="0.034"/>
<testcase classname="Find Embeds #unit" name="internalGatsbyEmbed" time="0.001"/>
<testcase classname="Find Embeds #unit" name="internalIaEmbed" time="0.002"/>
<testcase classname="Find Embeds #unit" name="internalImgEmbed" time="0"/>
<testcase classname="Test getMetadata" name="indvidual section block: header" time="0.001"/>
<testcase classname="Test getMetadata" name="indvidual section block: paragraph" time="0.001"/>
<testcase classname="Test getMetadata" name="indvidual section block: paragraphwithlink" time="0.001"/>
<testcase classname="Test getMetadata" name="indvidual section block: 2images" time="0.002"/>
<testcase classname="Test getMetadata" name="indvidual section block: headerparagraph" time="0.002"/>
<testcase classname="Test getMetadata" name="indvidual section block: headerlist" time="0.002"/>
<testcase classname="Test getMetadata" name="indvidual section block: headerimage" time="0.001"/>
<testcase classname="Test getMetadata" name="indvidual section block: headerparaimage" time="0.002"/>
<testcase classname="Test getMetadata" name="indvidual section block: headerpara2images" time="0.002"/>
<testcase classname="Test getMetadata" name="indvidual section block: complex" time="0.058"/>
<testcase classname="Test getMetadata" name="indvidual section block: herosection" time="0.002"/>
<testcase classname="Test getMetadata" name="getmetadata does not fail with "empty" mdast" time="0"/>
<testcase classname="Test getMetadata" name="getmetadata gets first title and intro" time="0.001"/>
<testcase classname="Test getMetadata" name="getmetadata does not fail with empty sections" time="0"/>
<testcase classname="Testing fetch content" name="passes non-standard raw github to content proxy" time="0.192"/>
<testcase classname="Testing fetch content" name="uses custom content proxy url" time="0.066"/>
<testcase classname="Testing fetch content" name="passes github token to content proxy" time="0.066"/>
<testcase classname="Testing fetch content" name="sets source hash and location" time="0.055"/>
<testcase classname="Testing fetch content" name="sets last modified" time="0.057"/>
<testcase classname="Testing fetch content" name="supports non-url source location " time="0.054"/>
<testcase classname="Testing HTML Pipeline (Filters)" name="html.pipe renders broken filters correctly" time="0.05"/>
<testcase classname="Testing HTML Pipeline (Links)" name="Renders absolute links" time="0.065"/>
<testcase classname="Testing HTML Pipeline (Links)" name="Renders self links" time="0.067"/>
<testcase classname="Testing HTML Pipeline (Links)" name="Renders relative links" time="0.08"/>
<testcase classname="Testing HTML Pipeline (Links)" name="Renders escaped links" time="0.069"/>
<testcase classname="Testing HTML Pipeline (Links)" name="Renders anchored relative links" time="0.061"/>
<testcase classname="Testing Markdown conversion" name="Renders empty markdown" time="0.056"/>
<testcase classname="Testing Markdown conversion" name="Renders single paragraph" time="0.069"/>
<testcase classname="Testing Markdown conversion" name="Code blocks with lang" time="0.149"/>
<testcase classname="Testing Markdown conversion" name="Code blocks without lang" time="0.204"/>
<testcase classname="Testing Markdown conversion" name="Quote with markdown" time="0.075"/>
<testcase classname="Testing Markdown conversion" name="Link references" time="0.067"/>
<testcase classname="Testing Markdown conversion" name="Admonition Notes" time="0.068"/>
<testcase classname="Testing Markdown conversion" name="tags" time="0.065"/>
<testcase classname="Testing Markdown conversion" name="tags in bold" time="0.066"/>
<testcase classname="Testing Markdown conversion" name="Link with angle brackets" time="0.065"/>
<testcase classname="Testing Markdown conversion" name="Link with space" time="0.069"/>
<testcase classname="Testing Markdown conversion" name="Link with special character" time="0.08"/>
<testcase classname="Testing Markdown conversion" name="HTML Block elements" time="0.091"/>
<testcase classname="Testing Markdown conversion" name="HTML comments" time="0.074"/>
<testcase classname="Testing Markdown conversion" name="HTML inline elements" time="0.089"/>
<testcase classname="Testing Markdown conversion" name="HTML incomplete inline elements" time="0.067"/>
<testcase classname="Testing Markdown conversion" name="HTML nested inline elements" time="0.065"/>
<testcase classname="Testing Markdown conversion" name="HTML nested inline elements and markup" time="0.067"/>
<testcase classname="Testing Markdown conversion" name="GFM" time="0.105"/>
<testcase classname="Testing Markdown conversion" name="XSS escape href attribute on links disabled by default" time="0.073"/>
<testcase classname="Testing Markdown conversion" name="XSS escape href attribute on links" time="0.084"/>
<testcase classname="Testing Markdown conversion" name="XSS escape href in images" time="0.082"/>
<testcase classname="Testing Markdown conversion" name="XSS escape DOM clobbering attributes" time="0.078"/>
<testcase classname="Testing Markdown conversion" name="Accept custom elements and attributes" time="0.088"/>
<testcase classname="Testing Markdown conversion" name="Unwraps hero images in the document root" time="0.073"/>
<testcase classname="Testing Markdown conversion" name="Unwraps hero images in sections" time="0.086"/>
<testcase classname="Testing Markdown conversion" name="Leaves regular images inside paragraphs" time="0.068"/>
<testcase classname="Testing Markdown conversion" name="Exposes section meta data" time="0.112"/>
<testcase classname="Testing Markdown conversion" name="Filters out hlx-* class and data-hlx-* attributes in production" time="0.076"/>
<testcase classname="Testing Markdown conversion" name="is robust against wrong tags in md" time="0.06"/>
<testcase classname="Testing Markdown conversion" name="is robust against tags in link texts" time="0.083"/>
<testcase classname="Testing Markdown conversion" name="is robust against linebreaks in tags" time="0.082"/>
<testcase classname="Testing Markdown conversion" name="translates icons" time="0.066"/>
<testcase classname="Testing Markdown conversion" name="translates icons in html" time="0.069"/>
<testcase classname="Testing Markdown conversion" name="translates icons in tables with paras" time="0.115"/>
<testcase classname="Testing Markdown conversion" name="translates icons in html tables" time="0.152"/>
<testcase classname="Testing Markdown conversion" name="translates svg-icons in html" time="0.069"/>
<testcase classname="Testing Markdown conversion" name="translates html in tables with autolink (disabled)" time="0.105"/>
<testcase classname="Testing Markdown conversion" name="expands gfm autolink" time="0.069"/>
<testcase classname="Testing Markdown conversion" name="ignores escaped urls" time="0.063"/>
<testcase classname="Testing HTML Pipeline with markup config" name="html.pipe does not touch output if there is no markup config" time="0.051"/>
<testcase classname="Testing HTML Pipeline with markup config" name="html.pipe adjusts the MDAST as per markup url config" time="0.115"/>
<testcase classname="Testing HTML Pipeline with markup config" name="html.pipe adjusts the MDAST as per markup markdown config" time="0.096"/>
<testcase classname="Testing HTML Pipeline with markup config" name="html.pipe adjusts the MDAST for embeds as per markup markdown config" time="0.12"/>
<testcase classname="Testing HTML Pipeline with markup config" name="html.pipe adjusts the MDAST as per markup content config" time="0.111"/>
<testcase classname="Testing HTML Pipeline with markup config" name="html.pipe adjusts single section per markup content config" time="0.088"/>
<testcase classname="Testing HTML Pipeline with markup config" name="html.pipe adjusts the DOM as per markup config" time="0.103"/>
<testcase classname="Testing HTML Pipeline Overrides" name="html.pipe adds headers from meta and link tags" time="0.048"/>
<testcase classname="Testing HTML Pipeline" name="html.pipe is a function" time="0"/>
<testcase classname="Testing HTML Pipeline" name="html.pipe does not make HTTP requests if body is provided" time="0.04"/>
<testcase classname="Testing HTML Pipeline" name="html.pipe keeps proper ESI tags" time="0.04"/>
<testcase classname="Testing HTML Pipeline" name="html.pipe keeps self-closing ESI tags" time="0.052"/>
<testcase classname="Testing HTML Pipeline" name="html.pipe keeps double ESI tags" time="0.043"/>
<testcase classname="Testing HTML Pipeline" name="html.pipe can be extended" time="0.041"/>
<testcase classname="Testing HTML Pipeline" name="html.pipe renders index.md from helix-cli correctly" time="0.072"/>
<testcase classname="Testing HTML Pipeline" name="html.pipe renders index.md from project-helix.io correctly" time="0.104"/>
<testcase classname="Testing HTML Pipeline" name="html.pipe renders modified index.md from helix-cli correctly" time="0.06"/>
<testcase classname="Testing HTML Pipeline" name="html.pipe complains when context is invalid" time="0.004"/>
<testcase classname="Testing HTML Pipeline" name="html.pipe complains with a specific message for mdast nodes when context is invalid" time="0.003"/>
<testcase classname="Testing HTML Pipeline" name="html.pipe complains with a specific message for mdast nodes wih extra properties when context is invalid" time="0.009"/>
<testcase classname="Testing HTML Pipeline" name="html.pipe complains when action is invalid" time="0.003"/>
<testcase classname="Testing HTML Pipeline" name="html.pipe makes HTTP requests" time="0.202"/>
<testcase classname="Testing HTML Pipeline" name="html.pipe makes HTTP requests and handles timeouts" time="0.528"/>
<testcase classname="Testing HTML Pipeline" name="html.pipe makes HTTP requests and falls back to master" time="0.073"/>
<testcase classname="Testing HTML Pipeline" name="html.pipe makes HTTP requests and falls back to branch if ref too long" time="0.207"/>
<testcase classname="Testing HTML Pipeline" name="html.pipe makes HTTP requests and falls back to default if ref and branch too long" time="0.191"/>
<testcase classname="Testing HTML Pipeline" name="html.pipe makes HTTP requests and prefers branch param for surrogate computation" time="0"><skipped/></testcase>
<testcase classname="Testing HTML Pipeline" name="html.pipe serves 404 for non existent content" time="0.05"/>
<testcase classname="Testing HTML Pipeline" name="html.pipe keeps existing headers" time="0.057"/>
<testcase classname="Testing HTML Pipeline" name="html.pipe produces debug dumps in memory" time="0.044"/>
<testcase classname="Testing HTML Pipeline" name="html.pipe produces debug dumps on disk for error" time="0.042"/>
<testcase classname="Testing HTML Pipeline" name="html.pipe sanitizes author-generated content, but not developer-generated code" time="0.089"/>
<testcase classname="Testing HTML Pipeline" name="html.pipe creates proper esi includes for css and scripts" time="0.087"/>
<testcase classname="Testing HTML Pipeline (universal)" name="html.pipe is a function" time="0"/>
<testcase classname="Testing HTML Pipeline (universal)" name="html.pipe does not make HTTP requests if body is provided" time="0.044"/>
<testcase classname="Testing HTML Pipeline (universal)" name="html.pipe keeps proper ESI tags" time="0.044"/>
<testcase classname="Testing HTML Pipeline (universal)" name="html.pipe keeps self-closing ESI tags" time="0.049"/>
<testcase classname="Testing HTML Pipeline (universal)" name="html.pipe keeps double ESI tags" time="0.042"/>
<testcase classname="Testing HTML Pipeline (universal)" name="html.pipe can be extended" time="0.044"/>
<testcase classname="Testing HTML Pipeline (universal)" name="html.pipe renders index.md from helix-cli correctly" time="0.061"/>
<testcase classname="Testing HTML Pipeline (universal)" name="html.pipe renders index.md from project-helix.io correctly" time="0.084"/>
<testcase classname="Testing HTML Pipeline (universal)" name="html.pipe renders modified index.md from helix-cli correctly" time="0.071"/>
<testcase classname="Testing HTML Pipeline (universal)" name="html.pipe complains when context is invalid" time="0.003"/>
<testcase classname="Testing HTML Pipeline (universal)" name="html.pipe complains with a specific message for mdast nodes when context is invalid" time="0.003"/>
<testcase classname="Testing HTML Pipeline (universal)" name="html.pipe complains with a specific message for mdast nodes wih extra properties when context is invalid" time="0.002"/>
<testcase classname="Testing HTML Pipeline (universal)" name="html.pipe complains when action is invalid" time="0.003"/>
<testcase classname="Testing HTML Pipeline (universal)" name="html.pipe makes HTTP requests" time="0.075"/>
<testcase classname="Testing HTML Pipeline (universal)" name="html.pipe makes HTTP requests and handles timeouts" time="0.105"/>
<testcase classname="Testing HTML Pipeline (universal)" name="html.pipe makes HTTP requests and falls back to master" time="0.055"/>
<testcase classname="Testing HTML Pipeline (universal)" name="html.pipe makes HTTP requests and prefers branch param for surrogate computation" time="0"><skipped/></testcase>
<testcase classname="Testing HTML Pipeline (universal)" name="html.pipe serves 404 for non existent content" time="0.037"/>
<testcase classname="Testing HTML Pipeline (universal)" name="html.pipe via pipeline fetch errors are propagated to action response" time="0.171"/>
<testcase classname="Testing HTML Pipeline (universal)" name="html.pipe keeps existing headers" time="0.058"/>
<testcase classname="Testing HTML Pipeline (universal)" name="html.pipe produces debug dumps in memory" time="0.045"/>
<testcase classname="Testing HTML Pipeline (universal)" name="html.pipe produces debug dumps on disk for error" time="0.036"/>
<testcase classname="Testing HTML Pipeline (universal)" name="html.pipe sanitizes author-generated content, but not developer-generated code" time="0.081"/>
<testcase classname="Testing HTML Pipeline (universal)" name="html.pipe creates proper esi includes for css and scripts" time="0.069"/>
<testcase classname="Test Iconize Processing" name="Markdown with icons yields valid context" time="0.005"/>
<testcase classname="Test Iconize Processing" name="Parses markdown with icons" time="0.003"/>
<testcase classname="Test Iconize Processing" name="Does not throw error if mdast is missing" time="0"/>
<testcase classname="Testing Default Pipeline" name="Default Pipeline can be loaded" time="0"/>
<testcase classname="Testing Default Pipeline" name="creates and runs the default pipeline" time="0.001"/>
<testcase classname="Test Check for Production Environment" name="Detects production environment" time="0"/>
<testcase classname="Test Check for Production Environment" name="Detects production environment in uncooperative situations" time="0"/>
<testcase classname="Test Check for Production Environment" name="Detects non-production environment" time="0"/>
<testcase classname="Testing JSON Pipeline" name="json.pipe is a function" time="0"/>
<testcase classname="Testing JSON Pipeline" name="json.pipe uses default logger if none provided" time="0.035"/>
<testcase classname="Testing JSON Pipeline" name="json.pipe makes HTTP requests" time="0.032"/>
<testcase classname="Testing JSON Pipeline" name="json.pipe keeps Mime-Type" time="0.036"/>
<testcase classname="Testing JSON Pipeline" name="json.pipe can be extended" time="0.036"/>
<testcase classname="Testing JSON Pipeline" name="json.pipe does not overwrite existing response body" time="0.037"/>
<testcase classname="Test Link Handler" name="Rewrites .md extension to .html" time="0"/>
<testcase classname="Test Link Handler" name="Does not alter URL with non .md extension" time="0"/>
<testcase classname="Test Link Handler" name="Does not lose query string while rewriting" time="0"/>
<testcase classname="Test Link Handler" name="Does not lose hash while rewriting" time="0"/>
<testcase classname="Test Link Handler" name="Ignores URL with protocol" time="0"/>
<testcase classname="Test Type Matcher Util" name="TypeMatcher works with empty input" time="0.001"/>
<testcase classname="Test Type Matcher Util" name="TypeMatcher returns empty array if no matchers are registered" time="0"/>
<testcase classname="Test Type Matcher Util" name="TypeMatcher matches simple expressions" time="0.001"/>
<testcase classname="Test Type Matcher Util" name="TypeMatcher matches multiple expressions" time="0"/>
<testcase classname="Test Type Matcher Util" name="TypeMatcher can match with functions" time="0.001"/>
<testcase classname="Test Type Matcher Util" name="TypeMatcher can match with functions" time="0"/>
<testcase classname="Test VDOMTransformer#getDocument" name="empty node" time="0.007"/>
<testcase classname="Test VDOMTransformer#getDocument" name="paragraph node" time="0.008"/>
<testcase classname="Test VDOMTransformer#getDocument" name="image node" time="0.006"/>
<testcase classname="Test VDOMTransformer#getDocument" name="h1 node" time="0.005"/>
<testcase classname="Test VDOMTransformer#getDocument" name="complex node" time="0.007"/>
<testcase classname="Test VDOMTransformer#getDocument" name="custom handler" time="0.005"/>
<testcase classname="Test VDOMTransformer#getDocument" name="multiple custom handlers" time="0.006"/>
<testcase classname="Test VDomTransformer static methods" name="static handle function returns result" time="0.001"/>
<testcase classname="Test VDomTransformer static methods" name="static handle function throws when result is string" time="0"/>
<testcase classname="Test VDomTransformer static methods" name="static handle throws when result is dom object" time="0.001"/>
<testcase classname="Test VDomTransformer static methods" name="static default returns correct default handler" time="0"/>
<testcase classname="Test VDomTransformer static methods" name="matchfn returns correct matches" time="0"/>
<testcase classname="Test VDomTransformer static methods" name="sanitize fails when matching inline not found" time="0"/>
<testcase classname="Test VDomTransformer static methods" name="sanitize creates proper closing tag" time="0.005"/>
<testcase classname="Test MDAST to VDOM Transformation" name="Simple MDAST Conversion" time="0.024"/>
<testcase classname="Test MDAST to VDOM Transformation" name="Headings MDAST Conversion" time="0.062"/>
<testcase classname="Test MDAST to VDOM Transformation" name="Sections MDAST Conversion" time="0.049"/>
<testcase classname="Test MDAST to VDOM Transformation" name="Custom Text Matcher Conversion" time="0.024"/>
<testcase classname="Test MDAST to VDOM Transformation" name="Programmatic Matcher Function" time="0.021"/>
<testcase classname="Test MDAST to VDOM Transformation" name="Custom Text Matcher with Multiple Elements" time="0.027"/>
<testcase classname="Test MDAST to VDOM Transformation" name="Custom Matcher returns string fails" time="0.001"/>
<testcase classname="Test MDAST to VDOM Transformation" name="Custom Matcher returns vdom fails" time="0.002"/>
<testcase classname="Test MDAST to VDOM Transformation" name="Custom link handler with VDOM Nodes" time="0.153"/>
<testcase classname="Test MDAST to VDOM Transformation" name="Custom link handler does not interfere with link rewriting" time="0.036"/>
<testcase classname="Test MDAST to VDOM Transformation" name="Icon handler replaces icon :placeholders:" time="0.018"/>
<testcase classname="Test MDAST to VDOM Transformation" name="creating nested list is performant" time="0.401"/>
<testcase classname="Test outputDebug" name="Testing no debug" time="0"/>
<testcase classname="Test outputDebug" name="Testing simple context" time="0.002"/>
<testcase classname="Test outputDebug" name="Testing upper case body tag" time="0"/>
<testcase classname="parseFrontmatter" name="Empty document should be ignored" time="0.003"/>
<testcase classname="parseFrontmatter" name="Just some text should be ignored" time="0.002"/>
<testcase classname="parseFrontmatter" name="Hash based second level header should be ignored" time="0.002"/>
<testcase classname="parseFrontmatter" name="Underline second level header should be ignored" time="0.002"/>
<testcase classname="parseFrontmatter" name="Single <hr> should be ignored" time="0.002"/>
<testcase classname="parseFrontmatter" name="h2 with underline followed by <hr> should be ignored" time="0.002"/>
<testcase classname="parseFrontmatter" name="diversity of h2 with underline and <hr> should be ignored" time="0.002"/>
<testcase classname="parseFrontmatter" name="resolving ambiguity by using h2 underlined with 4 dashes should be ignored" time="0.002"/>
<testcase classname="parseFrontmatter" name="resolving ambiguity by using hr with spaces between dashes should be ignored" time="0.001"/>
<testcase classname="parseFrontmatter" name="resolving ambiguity by using hr with spaces between dashes should be ignored" time="0.002"/>
<testcase classname="parseFrontmatter" name="resolving ambiguity by using hr with asterisk should be ignored" time="0.002"/>
<testcase classname="parseFrontmatter" name="resolving ambiguity by using hr with asterisk #2 should be ignored" time="0.001"/>
<testcase classname="parseFrontmatter" name="no frontmatter due to empty lines should be ignored" time="0.005"/>
<testcase classname="parseFrontmatter" name="no frontmatter with embeds should be ignored" time="0.002"/>
<testcase classname="parseFrontmatter" name="reject invalid yaml should be ignored" time="0.002"/>
<testcase classname="parseFrontmatter" name="reject yaml with list should be ignored" time="0.002"/>
<testcase classname="parseFrontmatter" name="reject yaml with json style list should log a warning" time="0.001"/>
<testcase classname="parseFrontmatter" name="reject yaml with number should be ignored" time="0.001"/>
<testcase classname="parseFrontmatter" name="reject yaml with string should be ignored" time="0.001"/>
<testcase classname="parseFrontmatter" name="Reject yaml with null should log a warning" time="0.002"/>
<testcase classname="parseFrontmatter" name="frontmatter with insufficient space before it should be ignored" time="0.002"/>
<testcase classname="parseFrontmatter" name="frontmatter with insufficient space after it should be ignored" time="0.002"/>
<testcase classname="parseFrontmatter" name="frontmatter with insufficient space on both ends should be ignored" time="0.002"/>
<testcase classname="parseFrontmatter" name="section with emoticons should be ignored" time="0.003"/>
<testcase classname="parseFrontmatter" name="just sections should be ignored" time="0.005"/>
<testcase classname="parseFrontmatter" name="frontmatter with empty line between paragraphs should be ignored" time="0.002"/>
<testcase classname="parseFrontmatter" name="frontmatter at the start of the document with empty line" time="0.002"/>
<testcase classname="parseFrontmatter" name="frontmatter in the middle of the document with empty line should be ignored" time="0.005"/>
<testcase classname="parseFrontmatter" name="frontmatter at the start of the document with empty line filled with space" time="0.002"/>
<testcase classname="parseFrontmatter" name="frontmatter in the middle of the document with empty line filled with space should be ignored" time="0.003"/>
<testcase classname="parseFrontmatter" name="trieloff/helix-demo/foo.md should be ignored" time="0.002"/>
<testcase classname="parseFrontmatter" name="Entire doc is frontmatter" time="0.003"/>
<testcase classname="parseFrontmatter" name="Entire doc is frontmatter w trailing space" time="0.002"/>
<testcase classname="parseFrontmatter" name="Frontmatter; underline h2; frontmatter" time="0.006"/>
<testcase classname="parseFrontmatter" name="Frontmatter; underline h2; frontmatter; w trailing space" time="0.005"/>
<testcase classname="parseFrontmatter" name="frontmatter; frontmatter" time="0.002"/>
<testcase classname="parseFrontmatter" name="frontmatter, <hr>, frontmatter" time="0.003"/>
<testcase classname="parseFrontmatter" name="frontmatter, text, frontmatter" time="0.003"/>
<testcase classname="parseFrontmatter" name="frontmatter, <hr>, frontmatter, <hr>" time="0.002"/>
<testcase classname="parseFrontmatter" name="frontmatter, text, frontmatter, text, frontmatter, text, frontmatter, text" time="0.006"/>
<testcase classname="Test Markdown Parsing" name="Parses simple markdown" time="0.001"/>
<testcase classname="Test Markdown Parsing" name="Parses example markdown" time="0.05"/>
<testcase classname="Test Markdown Parsing" name="Parses frontmatter markdown" time="0.041"/>
<testcase classname="Test Markdown Parsing" name="Parses headings correctly" time="0.002"/>
<testcase classname="Test Markdown Parsing" name="Parses HTML in Markdown" time="0.002"/>
<testcase classname="Test Markdown Parsing" name="Does not get confused by thematic breaks" time="0.003"/>
<testcase classname="Test Markdown Parsing" name="Does not get confused by grayscale" time="0.007"/>
<testcase classname="Test Markdown Parsing" name="Does not get confused by escaped links" time="0.003"/>
<testcase classname="Test Markdown Setting Context" name="Sets default context objects" time="0"/>
<testcase classname="Test Markdown Setting Context" name="Does not override values" time="0"/>
<testcase classname="Test Markdown Setting Context" name="Does handle empty extension case" time="0.001"/>
<testcase classname="Test MDAST position generation" name="keeps the position information if the logger is in 'silly' mode" time="0.001"/>
<testcase classname="Test MDAST position generation" name="keeps the position information if the logger is in 'trace' mode" time="0.001"/>
<testcase classname="Test MDAST position generation" name="keeps the position information if the logger is in 'debug' mode" time="0"/>
<testcase classname="Test MDAST position generation" name="removes the position information if the logger is in 'verbose' mode" time="0.001"/>
<testcase classname="Test MDAST position generation" name="removes the position information if the logger is in 'info' mode" time="0.001"/>
<testcase classname="Test MDAST position generation" name="removes the position information if the logger is in 'warn' mode" time="0"/>
<testcase classname="Test MDAST position generation" name="removes the position information if the logger is in 'error' mode" time="0"/>
<testcase classname="Test MDAST position generation" name="removes the position information if the logger is in 'fatal' mode" time="0"/>
<testcase classname="Test compiled patterns" name="Basic pattern matches" time="0.001"/>
<testcase classname="Test compiled patterns" name="Or expressions work" time="0"/>
<testcase classname="Test compiled patterns" name="Matches a gallery" time="0"/>
<testcase classname="Test compiled patterns" name="Matches a section with text or lists" time="0"/>
<testcase classname="Testing Pipeline" name="Executes without logger" time="0.001"/>
<testcase classname="Testing Pipeline" name="Executes correct order" time="0.001"/>
<testcase classname="Testing Pipeline" name="Can be run twice" time="0.001"/>
<testcase classname="Testing Pipeline" name="Can be extended" time="0.001"/>
<testcase classname="Testing Pipeline" name="Can be extended (once) using shorthand syntax" time="0.002"/>
<testcase classname="Testing Pipeline" name="Logs correct names" time="0.001"/>
<testcase classname="Testing Pipeline" name="Disables pre before when" time="0.001"/>
<testcase classname="Testing Pipeline" name="Disables pre before when conditionally" time="0.001"/>
<testcase classname="Testing Pipeline" name="When works with promises resolving false pre before when" time="0.001"/>
<testcase classname="Testing Pipeline" name="When works with promises resolving true pre before when" time="0.001"/>
<testcase classname="Testing Pipeline" name="Disables step before when" time="0.001"/>
<testcase classname="Testing Pipeline" name="when before pre throws error" time="0.001"/>
<testcase classname="Testing Pipeline" name="Disables pre before unless" time="0.001"/>
<testcase classname="Testing Pipeline" name="Enables pre before when" time="0.001"/>
<testcase classname="Testing Pipeline" name="Enables pre before unless" time="0.001"/>
<testcase classname="Testing Pipeline" name="Executes promises" time="0.002"/>
<testcase classname="Testing Pipeline" name="Executes taps" time="0.001"/>
<testcase classname="Testing Pipeline" name="Does not executes taps when conditions fail" time="0"/>
<testcase classname="Testing Pipeline" name="Ignore error if no error" time="0.001"/>
<testcase classname="Testing Pipeline" name="skip functions if context.error" time="0.001"/>
<testcase classname="Testing Pipeline" name="skip functions if exception" time="0.001"/>
<testcase classname="Testing Pipeline" name="error handler can clear error" time="0.001"/>
<testcase classname="Testing Pipeline" name="handles error in error" time="0.001"/>
<testcase classname="Testing Pipeline" name="handles generic pipeline error" time="0.001"/>
<testcase classname="Test Blob Image Rewriting" name="Rewrites blob store image URLs" time="0.015"/>
<testcase classname="Test Blob Image Rewriting" name="Does not throw error if document is missing" time="0.001"/>
<testcase classname="Test set-content-type" name="is a function" time="0"/>
<testcase classname="Test set-content-type" name="sets a content type" time="0"/>
<testcase classname="Test set-content-type" name="keeps existing content type" time="0.001"/>
<testcase classname="Test set-json-status" name="sets a verbose 500 for an error in dev" time="0"/>
<testcase classname="Test set-json-status" name="sets a terse 500 for an error in production" time="0.001"/>
<testcase classname="Test set-json-status" name="sets a verbose 500 for an error in production if x-debug header is present" time="0"/>
<testcase classname="Test set-json-status" name="keeps an existing status" time="0"/>
<testcase classname="Test set-json-status" name="sets a 200 if all good" time="0.001"/>
<testcase classname="Test set-status" name="sets a verbose 500 for an error in dev" time="0"/>
<testcase classname="Test set-status" name="sets a terse 500 for an error in production" time="0"/>
<testcase classname="Test set-status" name="sets a verbose 500 for an error in production if x-debug header is present" time="0"/>
<testcase classname="Test set-status" name="keeps an existing status" time="0"/>
<testcase classname="Test set-status" name="sets a 200 if all good" time="0"/>
<testcase classname="Test set-xml-status" name="sets a verbose 500 for an error in dev" time="0"/>
<testcase classname="Test set-xml-status" name="sets a terse 500 for an error in production" time="0"/>
<testcase classname="Test set-xml-status" name="sets a verbose 500 for an error in production if x-debug header is present" time="0"/>
<testcase classname="Test set-xml-status" name="keeps an existing status" time="0"/>
<testcase classname="Test set-xml-status" name="sets a 200 if all good" time="0"/>
<testcase classname="Test Smartypants Processing" name="Parses markdown with formatting" time="0.002"/>
<testcase classname="Test Smartypants Processing" name="Parses markdown with formatting" time="1.342"/>
<testcase classname="Test Smartypants Processing" name="does not throw error if mdast is missing" time="0"/>
<testcase classname="Test Section Splitting" name="Parses markdown with sections" time="0.025"/>
<testcase classname="Integration Test Static Asset Rewriting" name="Test static asset rewriting in full pipeline" time="0.022"/>
<testcase classname="Test Static Asset Rewriting" name="Ignores non-HTML" time="0"/>
<testcase classname="Test Static Asset Rewriting" name="Load simple HTML" time="0.009"/>
<testcase classname="Test Static Asset Rewriting" name="ESI include script tags HTML" time="0.007"/>
<testcase classname="Test Static Asset Rewriting" name="ESI include link tags HTML" time="0.008"/>
<testcase classname="Testing stringify pipeline step" name="document can be transformed" time="0.005"/>
<testcase classname="Testing stringify pipeline step" name="document without serialize function can be transformed" time="0.006"/>
<testcase classname="Testing stringify pipeline step" name="document with doctype can be transformed" time="0.005"/>
<testcase classname="Testing stringify pipeline step" name="document body can be transformed" time="0.005"/>
<testcase classname="Testing stringify pipeline step" name="response body takes precedence over document can be transformed" time="0.005"/>
<testcase classname="Testing stringify pipeline step" name="throws error if neither body or document is present in the response" time="0"/>
<testcase classname="Testing stringify pipeline step" name="throws error if document is not serializable" time="0"/>
<testcase classname="Testing universal adapter" name="createActionResponse keeps response intact" time="0"/>
<testcase classname="Testing universal adapter" name="createActionResponse provides reasonable defaults for JSON" time="0"/>
<testcase classname="Testing universal adapter" name="createActionResponse provides reasonable defaults for plain text" time="0"/>
<testcase classname="Testing universal adapter" name="createActionResponse propagates error with no http status to openwhisk" time="0.001"/>
<testcase classname="Testing universal adapter" name="createActionResponse keeps response intact in case of error" time="0"/>
<testcase classname="Testing universal adapter" name="Pipeline errors are propagated to action response" time="0.002"/>
<testcase classname="Testing universal adapter" name="extractActionContext creates valid object" time="0"/>
<testcase classname="Testing universal adapter" name="extractActionContext creates valid object with minimal params" time="0"/>
<testcase classname="Testing universal adapter" name="extractClientRequest needs to parse params parameter" time="0"/>
<testcase classname="Testing universal adapter" name="extractClientRequest acts reasonably on wrong params parameter" time="0"/>
<testcase classname="Testing universal adapter" name="extractClientRequest acts reasonably with no request object" time="0"/>
<testcase classname="Testing universal adapter" name="extractClientRequest uses x-old-url correctly" time="0"/>
<testcase classname="Testing universal adapter" name="extractClientRequest is correct with directory" time="0"/>
<testcase classname="Testing universal adapter" name="openwhisk parameters are properly adapted" time="0.002"/>
<testcase classname="Testing universal adapter" name="openwhisk adds JSON content from post request to context" time="0"><skipped/></testcase>
<testcase classname="Testing universal adapter" name="pipeline responds to status check" time="0.002"/>
<testcase classname="Testing universal adapter" name="it logs to coralogix if secrets are present" time="0.021"/>
<testcase classname="Testing universal adapter" name="it logs even if no trace logging" time="0.001"/>
<testcase classname="Testing XML Pipeline" name="xml.pipe is a function" time="0"/>
<testcase classname="Testing XML Pipeline" name="xml.pipe makes HTTP requests" time="0.042"/>
<testcase classname="Testing XML Pipeline" name="xml.pipe can be extended" time="0.038"/>
<testcase classname="Testing XML Pipeline" name="xml.pipe does not overwrite existing response body" time="0.039"/>
<testcase classname="Testing XML Pipeline" name="xml.pipe uses default logger if none provided" time="0.047"/>
<testcase classname="Testing XML Pipeline" name="xml.pipe serves 404 for non existent content" time="0.046"/>
<testcase classname="Testing XML Pipeline" name="xml.pipe detects ESI tag in XML object" time="0.038"/>
</testsuite>