Deploy website - based on 8e0b416949

This commit is contained in:
Tom McLaughlin 2021-07-19 16:39:23 -07:00
parent 154fba7582
commit 4b90780598
24 changed files with 45 additions and 45 deletions

View File

@ -7,14 +7,14 @@
<link rel="alternate" type="application/rss+xml" href="/sandwich/blog/rss.xml" title="Sandwich Blog RSS Feed">
<link rel="alternate" type="application/atom+xml" href="/sandwich/blog/atom.xml" title="Sandwich Blog Atom Feed"><title data-react-helmet="true">Page Not Found | Sandwich</title><meta data-react-helmet="true" property="og:title" content="Page Not Found | Sandwich"><meta data-react-helmet="true" property="og:url" content="https://github.com/codedownio/sandwich/sandwich/404.html"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_tag" content="default"><link data-react-helmet="true" rel="shortcut icon" href="/sandwich/img/favicon.ico"><link data-react-helmet="true" rel="canonical" href="https://github.com/codedownio/sandwich/sandwich/404.html"><link data-react-helmet="true" rel="alternate" href="https://github.com/codedownio/sandwich/sandwich/404.html" hreflang="en"><link data-react-helmet="true" rel="alternate" href="https://github.com/codedownio/sandwich/sandwich/404.html" hreflang="x-default"><link rel="stylesheet" href="/sandwich/assets/css/styles.66af1def.css">
<link rel="preload" href="/sandwich/assets/js/styles.d890a96e.js" as="script">
<link rel="preload" href="/sandwich/assets/js/runtime~main.a5b0a266.js" as="script">
<link rel="preload" href="/sandwich/assets/js/runtime~main.6291d418.js" as="script">
<link rel="preload" href="/sandwich/assets/js/main.1f4f5290.js" as="script">
</head>
<body>
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
<div><a href="#main" class="skipToContent_1oUP">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle" type="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/sandwich/"><img src="/sandwich/img/logo.svg" alt="Sandwich" class="themedImage_1VuW themedImage--light_3UqQ navbar__logo"><img src="/sandwich/img/logo.svg" alt="Sandwich" class="themedImage_1VuW themedImage--dark_hz6m navbar__logo"><strong class="navbar__title">Sandwich</strong></a><a class="navbar__item navbar__link" href="/sandwich/docs/">Docs</a><a class="navbar__item navbar__link" href="/sandwich/blog">Blog</a></div><div class="navbar__items navbar__items--right"><a href="https://github.com/codedownio/sandwich" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_GrZ2"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_71bT">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_71bT">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/sandwich/"><img src="/sandwich/img/logo.svg" alt="Sandwich" class="themedImage_1VuW themedImage--light_3UqQ navbar__logo"><img src="/sandwich/img/logo.svg" alt="Sandwich" class="themedImage_1VuW themedImage--dark_hz6m navbar__logo"><strong class="navbar__title">Sandwich</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/sandwich/docs/">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/sandwich/blog">Blog</a></li><li class="menu__list-item"><a href="https://github.com/codedownio/sandwich" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li></ul></div></div></div></nav><div class="main-wrapper"><main class="container margin-vert--xl"><div class="row"><div class="col col--6 col--offset-3"><h1 class="hero__title">Page Not Found</h1><p>We could not find what you were looking for.</p><p>Please contact the owner of the site that linked you to the original URL and let them know their link is broken.</p></div></div></main></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/sandwich/docs/">Introduction</a></li><li class="footer__item"><a class="footer__link-item" href="/sandwich/docs/formatters/slack">Slack integration</a></li><li class="footer__item"><a class="footer__link-item" href="/sandwich/docs/extensions/sandwich-webdriver">Selenium integration</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://github.com/codedownio/sandwich/discussions" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub Discussions</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/sandwich/blog">Blog</a></li><li class="footer__item"><a href="https://github.com/codedownio/sandwich" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2021 Tom McLaughlin. Built with Docusaurus.</div></div></div></footer></div>
<script src="/sandwich/assets/js/styles.d890a96e.js"></script>
<script src="/sandwich/assets/js/runtime~main.a5b0a266.js"></script>
<script src="/sandwich/assets/js/runtime~main.6291d418.js"></script>
<script src="/sandwich/assets/js/main.1f4f5290.js"></script>
</body>
</html>

View File

@ -0,0 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[8],{75:function(e,a,t){"use strict";t.r(a);var n=t(3),r=t(0),l=t.n(r),i=t(106),c=t(110),s=t(108),m=t(16),o=t(103),d=t(157),u=t.n(d),g=t(76),E=t.n(g),h=(t(77),t(158));const p=[{title:"Powerful formatters",imageUrl:"img/print_formatter.png",description:l.a.createElement(l.a.Fragment,null,"Use the terminal UI formatter to inspect test results, re-run selected tests, or jump straight to test sources in your editor. Or, choose one of the more traditional formatters.")},{title:"Easy profiling",imageUrl:"img/speedscope.png",description:l.a.createElement(l.a.Fragment,null,"Automatically record timing data for every test suite and visualize it as a flamegraph.")},{title:"Zero-config Selenium tests",imageUrl:"img/selenium_logo.png",description:l.a.createElement(l.a.Fragment,null,"Automatically obtain Selenium driver binaries to match your Chrome or Firefox version, run tests in graphical or headless mode, and even record videos.")}];function f({imageUrl:e,title:a,description:t}){const n=Object(o.a)(e);return l.a.createElement("div",{className:Object(i.a)("col col--4",E.a.feature)},n&&l.a.createElement("div",{className:"text--center"},l.a.createElement("img",{className:E.a.featureImage,src:n,alt:a})),l.a.createElement("h3",null,a),l.a.createElement("p",null,t))}a.default=function(){const e=Object(m.default)(),{siteConfig:a={}}=e;return l.a.createElement(c.a,{title:`Hello from ${a.title}`,description:"Yet another test framework for Haskell."},l.a.createElement("header",{className:E.a.heroBanner},l.a.createElement("div",{className:"container"},l.a.createElement("h1",{className:"hero__title"},a.title),l.a.createElement("p",{className:"hero__subtitle"},a.tagline),l.a.createElement("div",{className:E.a.carouselContainer},l.a.createElement(h.Carousel,{showThumbs:!1,dynamicHeight:!0},l.a.createElement("div",null,l.a.createElement("div",{className:E.a.carouselHeading},"Terminal UI interface"),l.a.createElement("img",{src:Object(o.a)("/img/basic.gif")})),l.a.createElement("div",null,l.a.createElement("div",{className:E.a.carouselHeading},"Jump to failure in editor"),l.a.createElement("img",{src:Object(o.a)("/img/jump_to_error.gif")})),l.a.createElement("div",null,l.a.createElement("div",{className:E.a.carouselHeading},"Slack integration"),l.a.createElement("img",{src:Object(o.a)("/img/slack.gif")})),l.a.createElement("div",null,l.a.createElement("div",{className:E.a.carouselHeading},"Timing and flamegraphs"),l.a.createElement("img",{src:Object(o.a)("/img/timing_landing.gif")})))),l.a.createElement("div",{className:E.a.buttons},l.a.createElement(s.a,{className:Object(i.a)("button button--outline button--secondary button--lg",E.a.getStarted),to:Object(o.a)("docs/")},"Read the docs"),l.a.createElement("span",{className:E.a.indexCtasGitHubButtonWrapper},l.a.createElement("iframe",{className:E.a.indexCtasGitHubButton,src:"https://ghbtns.com/github-btn.html?user=codedownio&repo=sandwich&type=star&count=true&size=large",width:160,height:30,title:"GitHub Stars"}))))),l.a.createElement("div",{className:"section "+E.a.section},l.a.createElement("div",{className:E.a.container},l.a.createElement("span",{className:E.a.heading},"Run the demo from the landing page:"),l.a.createElement("div",{className:E.a.code},l.a.createElement(u.a,{avgTypingDelay:1},"git clone git@github.com:codedownio/sandwich.git",l.a.createElement("br",null),"cd sandwich",l.a.createElement("br",null),"stack run demo-landing -- --tui")),l.a.createElement("span",{className:E.a.heading},"Or, try one of the other ",l.a.createElement("a",{className:E.a.sectionLink,href:"https://github.com/codedownio/sandwich/tree/master/"},"demos")," with ",l.a.createElement("code",{className:E.a.codeInline},"stack run demo-[demoname]"),"."))),l.a.createElement("main",null,p&&p.length>0&&l.a.createElement("section",{className:E.a.features},l.a.createElement("div",{className:"container"},l.a.createElement("div",{className:"row"},p.map(((e,a)=>l.a.createElement(f,Object(n.a)({key:a},e)))))))))}}}]);

View File

@ -1 +0,0 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[8],{75:function(e,a,t){"use strict";t.r(a);var n=t(3),r=t(0),l=t.n(r),i=t(106),c=t(110),s=t(108),m=t(16),o=t(103),d=t(157),u=t.n(d),g=t(76),h=t.n(g),E=(t(77),t(158)),p=[{title:"Powerful formatters",imageUrl:"img/print_formatter.png",description:l.a.createElement(l.a.Fragment,null,"Use the terminal UI formatter to inspect test results, re-run selected tests, or jump straight to test sources in your editor. Or, choose one of the more traditional formatters.")},{title:"Easy profiling",imageUrl:"img/speedscope.png",description:l.a.createElement(l.a.Fragment,null,"Automatically record timing data for every test suite and visualize it as a flamegraph.")},{title:"Zero-config Selenium tests",imageUrl:"img/selenium_logo.png",description:l.a.createElement(l.a.Fragment,null,"Automatically obtain Selenium driver binaries to match your Chrome or Firefox version, run tests in graphical or headless mode, and even record videos.")}];function f(e){var a=e.imageUrl,t=e.title,n=e.description,r=Object(o.a)(a);return l.a.createElement("div",{className:Object(i.a)("col col--4",h.a.feature)},r&&l.a.createElement("div",{className:"text--center"},l.a.createElement("img",{className:h.a.featureImage,src:r,alt:t})),l.a.createElement("h3",null,t),l.a.createElement("p",null,n))}a.default=function(){var e=Object(m.default)().siteConfig,a=void 0===e?{}:e;return l.a.createElement(c.a,{title:"Hello from "+a.title,description:"Yet another test framework for Haskell."},l.a.createElement("header",{className:h.a.heroBanner},l.a.createElement("div",{className:"container"},l.a.createElement("h1",{className:"hero__title"},a.title),l.a.createElement("p",{className:"hero__subtitle"},a.tagline),l.a.createElement("div",{className:h.a.carouselContainer},l.a.createElement(E.Carousel,{showThumbs:!1},l.a.createElement("div",null,l.a.createElement("div",{className:h.a.carouselHeading},"Terminal UI interface"),l.a.createElement("img",{src:Object(o.a)("/img/basic.gif")})),l.a.createElement("div",null,l.a.createElement("div",{className:h.a.carouselHeading},"Slack integration"),l.a.createElement("img",{src:Object(o.a)("/img/slack.gif")})),l.a.createElement("div",null,l.a.createElement("div",{className:h.a.carouselHeading},"Timing and flamegraphs"),l.a.createElement("img",{src:Object(o.a)("/img/timing_landing.gif")})))),l.a.createElement("div",{className:h.a.buttons},l.a.createElement(s.a,{className:Object(i.a)("button button--outline button--secondary button--lg",h.a.getStarted),to:Object(o.a)("docs/")},"Read the docs"),l.a.createElement("span",{className:h.a.indexCtasGitHubButtonWrapper},l.a.createElement("iframe",{className:h.a.indexCtasGitHubButton,src:"https://ghbtns.com/github-btn.html?user=codedownio&repo=sandwich&type=star&count=true&size=large",width:160,height:30,title:"GitHub Stars"}))))),l.a.createElement("div",{className:"section "+h.a.section},l.a.createElement("div",{className:h.a.container},l.a.createElement("span",{className:h.a.heading},"Run the demo from the landing page:"),l.a.createElement("div",{className:h.a.code},l.a.createElement(u.a,{avgTypingDelay:1},"git clone git@github.com:codedownio/sandwich.git",l.a.createElement("br",null),"cd sandwich",l.a.createElement("br",null),"stack run demo-landing -- --tui")),l.a.createElement("span",{className:h.a.heading},"Or, try one of the other ",l.a.createElement("a",{className:h.a.sectionLink,href:"https://github.com/codedownio/sandwich/tree/master/"},"demos")," with ",l.a.createElement("code",{className:h.a.codeInline},"stack run demo-[demoname]"),"."))),l.a.createElement("main",null,p&&p.length>0&&l.a.createElement("section",{className:h.a.features},l.a.createElement("div",{className:"container"},l.a.createElement("div",{className:"row"},p.map((function(e,a){return l.a.createElement(f,Object(n.a)({key:a},e))})))))))}}}]);

View File

@ -1 +1 @@
!function(e){function r(r){for(var a,o,f=r[0],u=r[1],d=r[2],b=0,l=[];b<f.length;b++)o=f[b],Object.prototype.hasOwnProperty.call(n,o)&&n[o]&&l.push(n[o][0]),n[o]=0;for(a in u)Object.prototype.hasOwnProperty.call(u,a)&&(e[a]=u[a]);for(i&&i(r);l.length;)l.shift()();return c.push.apply(c,d||[]),t()}function t(){for(var e,r=0;r<c.length;r++){for(var t=c[r],a=!0,o=1;o<t.length;o++){var u=t[o];0!==n[u]&&(a=!1)}a&&(c.splice(r--,1),e=f(f.s=t[0]))}return e}var a={},n={30:0},c=[];function o(e){return f.p+"assets/js/"+({4:"00e10e40",5:"0453327f",6:"0e384e19",7:"17896441",8:"1df93b7f",9:"254f4bd0",10:"39ebda1a",11:"4843f711",12:"51bc794d",13:"6ba24215",14:"70e9c229",15:"72f33daa",16:"83e77629",17:"935f2afb",18:"9e6d8236",19:"9f9da67d",20:"a0713bcb",21:"a4d7048f",22:"a6aa9e1f",23:"aaeb44aa",24:"b41ee9a6",25:"b6697e7b",26:"c626ff3a",27:"ccc49370",28:"ce3e42ad"}[e]||e)+"."+{1:"bce80bcf",2:"3ea8622d",3:"15be0f91",4:"97935350",5:"0d533c09",6:"9167f174",7:"a90fb09e",8:"c3ecfa94",9:"36842417",10:"e885cf63",11:"bc88d8f1",12:"d6ec86bb",13:"041c7ce2",14:"28b38dc8",15:"02a5b03b",16:"95cb0b70",17:"7b07ba41",18:"6510ca58",19:"560e266d",20:"fecfcbd1",21:"f68c3506",22:"be82ecc2",23:"57d2eac9",24:"252d8344",25:"2ffd3fae",26:"89cd51ca",27:"eb7f478c",28:"1ccb6628",31:"d603e694",32:"58bca672",33:"fba81c35"}[e]+".js"}function f(r){if(a[r])return a[r].exports;var t=a[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,f),t.l=!0,t.exports}f.e=function(e){var r=[],t=n[e];if(0!==t)if(t)r.push(t[2]);else{var a=new Promise((function(r,a){t=n[e]=[r,a]}));r.push(t[2]=a);var c,u=document.createElement("script");u.charset="utf-8",u.timeout=120,f.nc&&u.setAttribute("nonce",f.nc),u.src=o(e);var d=new Error;c=function(r){u.onerror=u.onload=null,clearTimeout(b);var t=n[e];if(0!==t){if(t){var a=r&&("load"===r.type?"missing":r.type),c=r&&r.target&&r.target.src;d.message="Loading chunk "+e+" failed.\n("+a+": "+c+")",d.name="ChunkLoadError",d.type=a,d.request=c,t[1](d)}n[e]=void 0}};var b=setTimeout((function(){c({type:"timeout",target:u})}),12e4);u.onerror=u.onload=c,document.head.appendChild(u)}return Promise.all(r)},f.m=e,f.c=a,f.d=function(e,r,t){f.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},f.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},f.t=function(e,r){if(1&r&&(e=f(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(f.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var a in e)f.d(t,a,function(r){return e[r]}.bind(null,a));return t},f.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return f.d(r,"a",r),r},f.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},f.p="/sandwich/",f.gca=function(e){return o(e={17896441:"7","00e10e40":"4","0453327f":"5","0e384e19":"6","1df93b7f":"8","254f4bd0":"9","39ebda1a":"10","4843f711":"11","51bc794d":"12","6ba24215":"13","70e9c229":"14","72f33daa":"15","83e77629":"16","935f2afb":"17","9e6d8236":"18","9f9da67d":"19",a0713bcb:"20",a4d7048f:"21",a6aa9e1f:"22",aaeb44aa:"23",b41ee9a6:"24",b6697e7b:"25",c626ff3a:"26",ccc49370:"27",ce3e42ad:"28"}[e]||e)},f.oe=function(e){throw console.error(e),e};var u=window.webpackJsonp=window.webpackJsonp||[],d=u.push.bind(u);u.push=r,u=u.slice();for(var b=0;b<u.length;b++)r(u[b]);var i=d;t()}([]);
!function(e){function r(r){for(var a,o,f=r[0],u=r[1],d=r[2],b=0,l=[];b<f.length;b++)o=f[b],Object.prototype.hasOwnProperty.call(n,o)&&n[o]&&l.push(n[o][0]),n[o]=0;for(a in u)Object.prototype.hasOwnProperty.call(u,a)&&(e[a]=u[a]);for(i&&i(r);l.length;)l.shift()();return c.push.apply(c,d||[]),t()}function t(){for(var e,r=0;r<c.length;r++){for(var t=c[r],a=!0,o=1;o<t.length;o++){var u=t[o];0!==n[u]&&(a=!1)}a&&(c.splice(r--,1),e=f(f.s=t[0]))}return e}var a={},n={30:0},c=[];function o(e){return f.p+"assets/js/"+({4:"00e10e40",5:"0453327f",6:"0e384e19",7:"17896441",8:"1df93b7f",9:"254f4bd0",10:"39ebda1a",11:"4843f711",12:"51bc794d",13:"6ba24215",14:"70e9c229",15:"72f33daa",16:"83e77629",17:"935f2afb",18:"9e6d8236",19:"9f9da67d",20:"a0713bcb",21:"a4d7048f",22:"a6aa9e1f",23:"aaeb44aa",24:"b41ee9a6",25:"b6697e7b",26:"c626ff3a",27:"ccc49370",28:"ce3e42ad"}[e]||e)+"."+{1:"bce80bcf",2:"3ea8622d",3:"15be0f91",4:"97935350",5:"0d533c09",6:"9167f174",7:"a90fb09e",8:"0f10b2d0",9:"36842417",10:"e885cf63",11:"bc88d8f1",12:"d6ec86bb",13:"041c7ce2",14:"28b38dc8",15:"02a5b03b",16:"95cb0b70",17:"7b07ba41",18:"6510ca58",19:"560e266d",20:"fecfcbd1",21:"f68c3506",22:"be82ecc2",23:"57d2eac9",24:"252d8344",25:"2ffd3fae",26:"89cd51ca",27:"eb7f478c",28:"1ccb6628",31:"d603e694",32:"58bca672",33:"fba81c35"}[e]+".js"}function f(r){if(a[r])return a[r].exports;var t=a[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,f),t.l=!0,t.exports}f.e=function(e){var r=[],t=n[e];if(0!==t)if(t)r.push(t[2]);else{var a=new Promise((function(r,a){t=n[e]=[r,a]}));r.push(t[2]=a);var c,u=document.createElement("script");u.charset="utf-8",u.timeout=120,f.nc&&u.setAttribute("nonce",f.nc),u.src=o(e);var d=new Error;c=function(r){u.onerror=u.onload=null,clearTimeout(b);var t=n[e];if(0!==t){if(t){var a=r&&("load"===r.type?"missing":r.type),c=r&&r.target&&r.target.src;d.message="Loading chunk "+e+" failed.\n("+a+": "+c+")",d.name="ChunkLoadError",d.type=a,d.request=c,t[1](d)}n[e]=void 0}};var b=setTimeout((function(){c({type:"timeout",target:u})}),12e4);u.onerror=u.onload=c,document.head.appendChild(u)}return Promise.all(r)},f.m=e,f.c=a,f.d=function(e,r,t){f.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},f.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},f.t=function(e,r){if(1&r&&(e=f(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(f.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var a in e)f.d(t,a,function(r){return e[r]}.bind(null,a));return t},f.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return f.d(r,"a",r),r},f.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},f.p="/sandwich/",f.gca=function(e){return o(e={17896441:"7","00e10e40":"4","0453327f":"5","0e384e19":"6","1df93b7f":"8","254f4bd0":"9","39ebda1a":"10","4843f711":"11","51bc794d":"12","6ba24215":"13","70e9c229":"14","72f33daa":"15","83e77629":"16","935f2afb":"17","9e6d8236":"18","9f9da67d":"19",a0713bcb:"20",a4d7048f:"21",a6aa9e1f:"22",aaeb44aa:"23",b41ee9a6:"24",b6697e7b:"25",c626ff3a:"26",ccc49370:"27",ce3e42ad:"28"}[e]||e)},f.oe=function(e){throw console.error(e),e};var u=window.webpackJsonp=window.webpackJsonp||[],d=u.push.bind(u);u.push=r,u=u.slice();for(var b=0;b<u.length;b++)r(u[b]);var i=d;t()}([]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -7,7 +7,7 @@
<link rel="alternate" type="application/rss+xml" href="/sandwich/blog/rss.xml" title="Sandwich Blog RSS Feed">
<link rel="alternate" type="application/atom+xml" href="/sandwich/blog/atom.xml" title="Sandwich Blog Atom Feed"><title data-react-helmet="true">Command line arguments | Sandwich</title><meta data-react-helmet="true" property="og:url" content="https://github.com/codedownio/sandwich/sandwich/docs/command_line"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Command line arguments | Sandwich"><meta data-react-helmet="true" name="description" content="If you use runSandwichWithCommandLineArgs, then you can control your tests with command line arguments. This section contains a quick overview of the available arguments, and explains how you can add your own custom ones."><meta data-react-helmet="true" property="og:description" content="If you use runSandwichWithCommandLineArgs, then you can control your tests with command line arguments. This section contains a quick overview of the available arguments, and explains how you can add your own custom ones."><link data-react-helmet="true" rel="shortcut icon" href="/sandwich/img/favicon.ico"><link data-react-helmet="true" rel="canonical" href="https://github.com/codedownio/sandwich/sandwich/docs/command_line"><link data-react-helmet="true" rel="alternate" href="https://github.com/codedownio/sandwich/sandwich/docs/command_line" hreflang="en"><link data-react-helmet="true" rel="alternate" href="https://github.com/codedownio/sandwich/sandwich/docs/command_line" hreflang="x-default"><link rel="stylesheet" href="/sandwich/assets/css/styles.66af1def.css">
<link rel="preload" href="/sandwich/assets/js/styles.d890a96e.js" as="script">
<link rel="preload" href="/sandwich/assets/js/runtime~main.a5b0a266.js" as="script">
<link rel="preload" href="/sandwich/assets/js/runtime~main.6291d418.js" as="script">
<link rel="preload" href="/sandwich/assets/js/main.1f4f5290.js" as="script">
<link rel="preload" href="/sandwich/assets/js/1.bce80bcf.js" as="script">
<link rel="preload" href="/sandwich/assets/js/2.3ea8622d.js" as="script">
@ -25,7 +25,7 @@
</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">commandLineArgsDemo :: TopSpecWithOptions&#x27; MyArgs</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">commandLineArgsDemo = describe &quot;Custom command line args&quot; $ do</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> it &quot;Uses the custom command line args&quot; $ do</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> MyArgs {..} &lt;- getUserCommandLineOptions</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> warn [i|Got foo: #{myArgsFoo}|]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> warn [i|Got bar: #{myArgsBar}|]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">main :: IO ()</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">main = runSandwichWithCommandLineArgs&#x27; testOptions myArgsParser commandLineArgsDemo</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_Ue-o">Copy</button></div></div><p>Now we can run this with</p><div class="codeBlockContainer_K1bP"><div class="codeBlockContent_hGly"><div tabindex="0" class="prism-code language-undefined codeBlock_23N8 thin-scrollbar"><div class="codeBlockLines_39YC" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">cd sandwich/sandwich-demos</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">stack run command-line-args -- --print --foo asdf --bar 42</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_Ue-o">Copy</button></div></div><p>and the tests will use our custom values.</p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/facebook/docusaurus/edit/master/website/docs/command_line.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2_ui" aria-label="Edit page"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Docs pages navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/sandwich/docs/timing"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Timing</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/sandwich/docs/discovery"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Test Discovery »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_35-E thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#quick-reference" class="table-of-contents__link">Quick reference</a></li><li><a href="#custom-command-line-arguments" class="table-of-contents__link">Custom command line arguments</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/sandwich/docs/">Introduction</a></li><li class="footer__item"><a class="footer__link-item" href="/sandwich/docs/formatters/slack">Slack integration</a></li><li class="footer__item"><a class="footer__link-item" href="/sandwich/docs/extensions/sandwich-webdriver">Selenium integration</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://github.com/codedownio/sandwich/discussions" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub Discussions</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/sandwich/blog">Blog</a></li><li class="footer__item"><a href="https://github.com/codedownio/sandwich" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2021 Tom McLaughlin. Built with Docusaurus.</div></div></div></footer></div>
<script src="/sandwich/assets/js/styles.d890a96e.js"></script>
<script src="/sandwich/assets/js/runtime~main.a5b0a266.js"></script>
<script src="/sandwich/assets/js/runtime~main.6291d418.js"></script>
<script src="/sandwich/assets/js/main.1f4f5290.js"></script>
<script src="/sandwich/assets/js/1.bce80bcf.js"></script>
<script src="/sandwich/assets/js/2.3ea8622d.js"></script>

File diff suppressed because one or more lines are too long

View File

@ -7,7 +7,7 @@
<link rel="alternate" type="application/rss+xml" href="/sandwich/blog/rss.xml" title="Sandwich Blog RSS Feed">
<link rel="alternate" type="application/atom+xml" href="/sandwich/blog/atom.xml" title="Sandwich Blog Atom Feed"><title data-react-helmet="true">Test Discovery | Sandwich</title><meta data-react-helmet="true" property="og:url" content="https://github.com/codedownio/sandwich/sandwich/docs/discovery"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Test Discovery | Sandwich"><meta data-react-helmet="true" name="description" content="Test discovery is the process of automatically finding test files, so you don&#x27;t need to manually manage your imports and write out top-level test trees."><meta data-react-helmet="true" property="og:description" content="Test discovery is the process of automatically finding test files, so you don&#x27;t need to manually manage your imports and write out top-level test trees."><link data-react-helmet="true" rel="shortcut icon" href="/sandwich/img/favicon.ico"><link data-react-helmet="true" rel="canonical" href="https://github.com/codedownio/sandwich/sandwich/docs/discovery"><link data-react-helmet="true" rel="alternate" href="https://github.com/codedownio/sandwich/sandwich/docs/discovery" hreflang="en"><link data-react-helmet="true" rel="alternate" href="https://github.com/codedownio/sandwich/sandwich/docs/discovery" hreflang="x-default"><link rel="stylesheet" href="/sandwich/assets/css/styles.66af1def.css">
<link rel="preload" href="/sandwich/assets/js/styles.d890a96e.js" as="script">
<link rel="preload" href="/sandwich/assets/js/runtime~main.a5b0a266.js" as="script">
<link rel="preload" href="/sandwich/assets/js/runtime~main.6291d418.js" as="script">
<link rel="preload" href="/sandwich/assets/js/main.1f4f5290.js" as="script">
<link rel="preload" href="/sandwich/assets/js/1.bce80bcf.js" as="script">
<link rel="preload" href="/sandwich/assets/js/2.3ea8622d.js" as="script">
@ -34,7 +34,7 @@
</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Available options:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --selenium-tests SeleniumTests</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --selenium-tests1 SeleniumTests.SeleniumTests1</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --selenium-tests2 SeleniumTests.SeleniumTests2</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --unit-tests UnitTests</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --unit-tests1 UnitTests.UnitTests1</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --unit-tests2 UnitTests.UnitTests2</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> -h,--help Show this </span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">help</span><span class="token plain"> text</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_Ue-o">Copy</button></div></div><div class="admonition admonition-note alert alert--secondary"><div class="admonition-heading"><h5><span class="admonition-icon"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="16" viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span>note</h5></div><div class="admonition-content"><p>You can always run individual test subtrees by simply passing <code>--filter &quot;some filter string&quot;</code> with an appropriate filter string. However, this will filter the tree to any nodes that match the filter string, so it may not be as convenient to exactly match the subtree corresponding to a single module.</p></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_2LWZ" id="main-function-autodetection"></a>Main function autodetection<a class="hash-link" href="#main-function-autodetection" title="Direct link to heading">#</a></h2><p>Sometimes you want to include a <code>main</code> function in an individual test module. These main functions can be convenient when you want to iterate on a single test module within a GHCi session, for example.</p><p>Sandwich can discover the presence of these <code>main</code> functions and give you the ability to run them using the individual module flag. It does this using some <a href="https://hackage.haskell.org/package/haskell-src-exts" target="_blank" rel="noopener noreferrer">magic</a>.</p><p>If this has happened, Sandwich will indicate it by putting an asterisk next to the module name. For example, if <code>UnitTests2.hs</code> had its own main function inside, you would see the following.</p><div class="codeBlockContainer_K1bP"><div class="codeBlockContent_hGly bash"><div tabindex="0" class="prism-code language-bash codeBlock_23N8 thin-scrollbar"><div class="codeBlockLines_39YC" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token operator" style="color:rgb(137, 221, 255)">&gt;</span><span class="token plain"> stack run discover -- --list-tests</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Available options:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --selenium-tests SeleniumTests</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --selenium-tests1 SeleniumTests.SeleniumTests1</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --selenium-tests2 SeleniumTests.SeleniumTests2</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --unit-tests UnitTests</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --unit-tests1 UnitTests.UnitTests1</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --unit-tests2 UnitTests.UnitTests2*</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> -h,--help Show this </span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">help</span><span class="token plain"> text</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_Ue-o">Copy</button></div></div><p>Thus, passing <code>--unit-tests2</code> would result in that file&#x27;s <code>main</code> function being invoked, rather than the normal one in <code>Main.hs</code>.</p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/facebook/docusaurus/edit/master/website/docs/discovery.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2_ui" aria-label="Edit page"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Docs pages navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/sandwich/docs/command_line"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Command line arguments</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/sandwich/docs/formatters/tui"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Terminal UI Formatter »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_35-E thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#the-basic-setup" class="table-of-contents__link">The basic setup</a></li><li><a href="#running-individual-test-modules" class="table-of-contents__link">Running individual test modules</a></li><li><a href="#main-function-autodetection" class="table-of-contents__link">Main function autodetection</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/sandwich/docs/">Introduction</a></li><li class="footer__item"><a class="footer__link-item" href="/sandwich/docs/formatters/slack">Slack integration</a></li><li class="footer__item"><a class="footer__link-item" href="/sandwich/docs/extensions/sandwich-webdriver">Selenium integration</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://github.com/codedownio/sandwich/discussions" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub Discussions</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/sandwich/blog">Blog</a></li><li class="footer__item"><a href="https://github.com/codedownio/sandwich" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2021 Tom McLaughlin. Built with Docusaurus.</div></div></div></footer></div>
<script src="/sandwich/assets/js/styles.d890a96e.js"></script>
<script src="/sandwich/assets/js/runtime~main.a5b0a266.js"></script>
<script src="/sandwich/assets/js/runtime~main.6291d418.js"></script>
<script src="/sandwich/assets/js/main.1f4f5290.js"></script>
<script src="/sandwich/assets/js/1.bce80bcf.js"></script>
<script src="/sandwich/assets/js/2.3ea8622d.js"></script>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -7,7 +7,7 @@
<link rel="alternate" type="application/rss+xml" href="/sandwich/blog/rss.xml" title="Sandwich Blog RSS Feed">
<link rel="alternate" type="application/atom+xml" href="/sandwich/blog/atom.xml" title="Sandwich Blog Atom Feed"><title data-react-helmet="true">Terminal UI Formatter | Sandwich</title><meta data-react-helmet="true" property="og:url" content="https://github.com/codedownio/sandwich/sandwich/docs/formatters/tui"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Terminal UI Formatter | Sandwich"><meta data-react-helmet="true" name="description" content="The terminal UI formatter is one of the key features of Sandwich. It uses the awesome Brick library to make an interactive UI for running (or re-running! ) tests and inspecting their results."><meta data-react-helmet="true" property="og:description" content="The terminal UI formatter is one of the key features of Sandwich. It uses the awesome Brick library to make an interactive UI for running (or re-running! ) tests and inspecting their results."><link data-react-helmet="true" rel="shortcut icon" href="/sandwich/img/favicon.ico"><link data-react-helmet="true" rel="canonical" href="https://github.com/codedownio/sandwich/sandwich/docs/formatters/tui"><link data-react-helmet="true" rel="alternate" href="https://github.com/codedownio/sandwich/sandwich/docs/formatters/tui" hreflang="en"><link data-react-helmet="true" rel="alternate" href="https://github.com/codedownio/sandwich/sandwich/docs/formatters/tui" hreflang="x-default"><link rel="stylesheet" href="/sandwich/assets/css/styles.66af1def.css">
<link rel="preload" href="/sandwich/assets/js/styles.d890a96e.js" as="script">
<link rel="preload" href="/sandwich/assets/js/runtime~main.a5b0a266.js" as="script">
<link rel="preload" href="/sandwich/assets/js/runtime~main.6291d418.js" as="script">
<link rel="preload" href="/sandwich/assets/js/main.1f4f5290.js" as="script">
<link rel="preload" href="/sandwich/assets/js/1.bce80bcf.js" as="script">
<link rel="preload" href="/sandwich/assets/js/2.3ea8622d.js" as="script">
@ -25,7 +25,7 @@
</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">customExceptionsDemo :: TopSpec</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">customExceptionsDemo = describe &quot;Custom exceptions&quot; $ do</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> it &quot;formats a custom exception with its own widget rendering function&quot; $ do</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> liftIO $ throwIO $ MyColoredException &quot;My widget message&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">testOptions = defaultOptions {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> , optionsFormatters = [SomeFormatter $ defaultTerminalUIFormatter {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> terminalUICustomExceptionFormatters = [formatMyColoredException]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> }]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> }</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_Ue-o">Copy</button></div></div></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/facebook/docusaurus/edit/master/website/docs/formatters/tui.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2_ui" aria-label="Edit page"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Docs pages navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/sandwich/docs/discovery"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Test Discovery</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/sandwich/docs/formatters/print"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Print Formatter »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_35-E thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#usage" class="table-of-contents__link">Usage</a></li><li><a href="#about-the-ui" class="table-of-contents__link">About the UI</a></li><li><a href="#opening-nodes-in-your-file-explorer" class="table-of-contents__link">Opening nodes in your file explorer</a></li><li><a href="#jumping-to-tests-logs-and-failures-in-your-editor" class="table-of-contents__link">Jumping to tests, logs, and failures in your editor</a></li><li><a href="#configuration" class="table-of-contents__link">Configuration</a></li><li><a href="#custom-exception-formatters" class="table-of-contents__link">Custom exception formatters</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/sandwich/docs/">Introduction</a></li><li class="footer__item"><a class="footer__link-item" href="/sandwich/docs/formatters/slack">Slack integration</a></li><li class="footer__item"><a class="footer__link-item" href="/sandwich/docs/extensions/sandwich-webdriver">Selenium integration</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://github.com/codedownio/sandwich/discussions" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub Discussions</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/sandwich/blog">Blog</a></li><li class="footer__item"><a href="https://github.com/codedownio/sandwich" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2021 Tom McLaughlin. Built with Docusaurus.</div></div></div></footer></div>
<script src="/sandwich/assets/js/styles.d890a96e.js"></script>
<script src="/sandwich/assets/js/runtime~main.a5b0a266.js"></script>
<script src="/sandwich/assets/js/runtime~main.6291d418.js"></script>
<script src="/sandwich/assets/js/main.1f4f5290.js"></script>
<script src="/sandwich/assets/js/1.bce80bcf.js"></script>
<script src="/sandwich/assets/js/2.3ea8622d.js"></script>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -7,7 +7,7 @@
<link rel="alternate" type="application/rss+xml" href="/sandwich/blog/rss.xml" title="Sandwich Blog RSS Feed">
<link rel="alternate" type="application/atom+xml" href="/sandwich/blog/atom.xml" title="Sandwich Blog Atom Feed"><title data-react-helmet="true">Test Trees | Sandwich</title><meta data-react-helmet="true" property="og:url" content="https://github.com/codedownio/sandwich/sandwich/docs/test_trees"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Test Trees | Sandwich"><meta data-react-helmet="true" name="description" content="Sandwich is built around the idea of a test tree. You write a test tree using simple monadic syntax. The simplest kinds of nodes are describe and it nodes, which are used to group and define tests. For example:"><meta data-react-helmet="true" property="og:description" content="Sandwich is built around the idea of a test tree. You write a test tree using simple monadic syntax. The simplest kinds of nodes are describe and it nodes, which are used to group and define tests. For example:"><link data-react-helmet="true" rel="shortcut icon" href="/sandwich/img/favicon.ico"><link data-react-helmet="true" rel="canonical" href="https://github.com/codedownio/sandwich/sandwich/docs/test_trees"><link data-react-helmet="true" rel="alternate" href="https://github.com/codedownio/sandwich/sandwich/docs/test_trees" hreflang="en"><link data-react-helmet="true" rel="alternate" href="https://github.com/codedownio/sandwich/sandwich/docs/test_trees" hreflang="x-default"><link rel="stylesheet" href="/sandwich/assets/css/styles.66af1def.css">
<link rel="preload" href="/sandwich/assets/js/styles.d890a96e.js" as="script">
<link rel="preload" href="/sandwich/assets/js/runtime~main.a5b0a266.js" as="script">
<link rel="preload" href="/sandwich/assets/js/runtime~main.6291d418.js" as="script">
<link rel="preload" href="/sandwich/assets/js/main.1f4f5290.js" as="script">
<link rel="preload" href="/sandwich/assets/js/1.bce80bcf.js" as="script">
<link rel="preload" href="/sandwich/assets/js/2.3ea8622d.js" as="script">
@ -22,7 +22,7 @@
<div><a href="#main" class="skipToContent_1oUP">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle" type="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/sandwich/"><img src="/sandwich/img/logo.svg" alt="Sandwich" class="themedImage_1VuW themedImage--light_3UqQ navbar__logo"><img src="/sandwich/img/logo.svg" alt="Sandwich" class="themedImage_1VuW themedImage--dark_hz6m navbar__logo"><strong class="navbar__title">Sandwich</strong></a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/sandwich/docs/">Docs</a><a class="navbar__item navbar__link" href="/sandwich/blog">Blog</a></div><div class="navbar__items navbar__items--right"><a href="https://github.com/codedownio/sandwich" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_GrZ2"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_71bT">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_71bT">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/sandwich/"><img src="/sandwich/img/logo.svg" alt="Sandwich" class="themedImage_1VuW themedImage--light_3UqQ navbar__logo"><img src="/sandwich/img/logo.svg" alt="Sandwich" class="themedImage_1VuW themedImage--dark_hz6m navbar__logo"><strong class="navbar__title">Sandwich</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link navbar__link--active" href="/sandwich/docs/">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/sandwich/blog">Blog</a></li><li class="menu__list-item"><a href="https://github.com/codedownio/sandwich" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li></ul></div></div></div></nav><div class="main-wrapper main-docs-wrapper"><div class="docPage_31aa"><main class="docMainContainer_3ufF"><div class="container padding-vert--lg docItemWrapper_3FMP"><div class="row"><div class="col docItemCol_3FnS"><div class="docItemContainer_33ec"><article><header><h1 class="docTitle_3a4h">Test Trees</h1></header><div class="markdown"><p>Sandwich is built around the idea of a <em>test tree</em>. You write a test tree using simple monadic syntax. The simplest kinds of nodes are <code>describe</code> and <code>it</code> nodes, which are used to group and define tests. For example:</p><div class="codeBlockContainer_K1bP"><div class="codeBlockContent_hGly haskell"><div tabindex="0" class="prism-code language-haskell codeBlock_23N8 thin-scrollbar"><div class="codeBlockLines_39YC" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">tests = describe &quot;arithmetic&quot; $ do</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> it &quot;adds&quot; $ do</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> (2 + 2) `shouldBe` 4</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> it &quot;subtracts&quot; $ do</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> warn &quot;Having some trouble getting this test to pass...&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> (2 - 2) `shouldBe` 1</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_Ue-o">Copy</button></div></div><p>However, several other node types also exist:</p><ul><li><code>parallel</code> node: runs all of its child nodes in parallel.</li><li><code>before</code>/<code>beforeEach</code> runs an action before its child nodes.</li><li><code>after</code>/<code>afterEach</code> runs an action after its child nodes.</li><li><code>around</code>/<code>aroundEach</code> wrap the child nodes with a callback.</li><li><code>introduce</code>/<code>introduceWith</code> supply a <em>context</em> to its child nodes.</li></ul></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/facebook/docusaurus/edit/master/website/docs/test_trees.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2_ui" aria-label="Edit page"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Docs pages navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_35-E thin-scrollbar"></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/sandwich/docs/">Introduction</a></li><li class="footer__item"><a class="footer__link-item" href="/sandwich/docs/formatters/slack">Slack integration</a></li><li class="footer__item"><a class="footer__link-item" href="/sandwich/docs/extensions/sandwich-webdriver">Selenium integration</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://github.com/codedownio/sandwich/discussions" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub Discussions</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/sandwich/blog">Blog</a></li><li class="footer__item"><a href="https://github.com/codedownio/sandwich" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2021 Tom McLaughlin. Built with Docusaurus.</div></div></div></footer></div>
<script src="/sandwich/assets/js/styles.d890a96e.js"></script>
<script src="/sandwich/assets/js/runtime~main.a5b0a266.js"></script>
<script src="/sandwich/assets/js/runtime~main.6291d418.js"></script>
<script src="/sandwich/assets/js/main.1f4f5290.js"></script>
<script src="/sandwich/assets/js/1.bce80bcf.js"></script>
<script src="/sandwich/assets/js/2.3ea8622d.js"></script>

File diff suppressed because one or more lines are too long

BIN
img/jump_to_error.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

File diff suppressed because one or more lines are too long