From ccdf6af78dcbddd7e7d9318fa81e207f7a3eae85 Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Sun, 19 Jul 2020 11:41:15 -0700 Subject: [PATCH] docs: use sapper/cypress for e2e testing --- .travis.yml | 3 +- CONTRIBUTING.md | 36 +- docs/.cfignore | 3 + docs/.gitignore | 7 + docs/README.md | 26 + docs/Staticfile | 3 + docs/cypress.json | 5 + docs/cypress/integration/Button.js | 11 + docs/cypress/plugins/index.js | 21 + docs/cypress/support/commands.js | 3 + docs/cypress/support/index.js | 1 + docs/includes/header.conf | 5 + docs/manifest.yml | 7 + docs/package.json | 25 + docs/src/client.js | 3 + docs/src/components/GlobalHeader.svelte | 33 + docs/src/routes/_error.svelte | 21 + docs/src/routes/_layout.svelte | 15 + docs/src/routes/about.svelte | 6 + docs/src/routes/components/[slug].json.js | 17 + docs/src/routes/components/[slug].svelte | 38 + docs/src/routes/components/_components.js | 10 + docs/src/routes/components/index.json.js | 6 + docs/src/routes/components/index.svelte | 27 + docs/src/routes/examples/Button.svelte | 8 + docs/src/routes/examples/_layout.svelte | 1 + docs/src/routes/index.svelte | 10 + docs/src/server.js | 11 + docs/src/service-worker.js | 82 + docs/src/template.html | 29 + docs/static/favicon.png | Bin 0 -> 7382 bytes docs/static/logo-192.png | Bin 0 -> 12677 bytes docs/static/logo-512.png | Bin 0 -> 40451 bytes docs/static/manifest.json | 20 + docs/webpack.config.js | 64 + docs/yarn.lock | 3842 +++++++++++++++++++++ 36 files changed, 4373 insertions(+), 26 deletions(-) create mode 100644 docs/.cfignore create mode 100644 docs/.gitignore create mode 100644 docs/README.md create mode 100644 docs/Staticfile create mode 100644 docs/cypress.json create mode 100644 docs/cypress/integration/Button.js create mode 100644 docs/cypress/plugins/index.js create mode 100644 docs/cypress/support/commands.js create mode 100644 docs/cypress/support/index.js create mode 100644 docs/includes/header.conf create mode 100644 docs/manifest.yml create mode 100644 docs/package.json create mode 100644 docs/src/client.js create mode 100644 docs/src/components/GlobalHeader.svelte create mode 100644 docs/src/routes/_error.svelte create mode 100644 docs/src/routes/_layout.svelte create mode 100644 docs/src/routes/about.svelte create mode 100644 docs/src/routes/components/[slug].json.js create mode 100644 docs/src/routes/components/[slug].svelte create mode 100644 docs/src/routes/components/_components.js create mode 100644 docs/src/routes/components/index.json.js create mode 100644 docs/src/routes/components/index.svelte create mode 100644 docs/src/routes/examples/Button.svelte create mode 100644 docs/src/routes/examples/_layout.svelte create mode 100644 docs/src/routes/index.svelte create mode 100644 docs/src/server.js create mode 100644 docs/src/service-worker.js create mode 100644 docs/src/template.html create mode 100644 docs/static/favicon.png create mode 100644 docs/static/logo-192.png create mode 100644 docs/static/logo-512.png create mode 100644 docs/static/manifest.json create mode 100644 docs/webpack.config.js create mode 100644 docs/yarn.lock diff --git a/.travis.yml b/.travis.yml index 114503a0..6d847239 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,5 +2,6 @@ language: node_js node_js: 10 cache: yarn script: - - yarn build - yarn prepack + - yarn build + - cd docs && yarn && yarn test diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ee3daf76..1ed1da20 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,15 +1,13 @@ # Contributing -## Getting Started +## Prerequisites -### Prerequisites +This project uses Node.js and Yarn. -This project uses node (>=10) and yarn (>=1). +- [Node.js](https://nodejs.org/en/download/package-manager/#macos) (version >=10) +- [Yarn](https://yarnpkg.com/en/docs/install#mac-stable) -- [node](https://nodejs.org/en/download/package-manager/#macos) (version 10.x or greater) -- [yarn](https://yarnpkg.com/en/docs/install#mac-stable) (version 1.x or greater) - -### Fork and Clone +## Fork and Clone Fork the repo and clone your fork: @@ -26,7 +24,7 @@ git remote add upstream git@github.com:IBM/carbon-components-svelte.git git remote -v ``` -### Install +## Install Install the project dependencies: @@ -38,19 +36,7 @@ yarn install ## Workflow -### Repo Structure - -```js -.storybook // Storybook configuration -docs // static, exported Storybook used by GitHub Pages -src -│ -└───components // individual components -└───internal // code excluded from the component library -└───lib // shared utilities -``` - -### Developing +### Develop This project uses Storybook for UI development and "live" documentation. @@ -74,7 +60,7 @@ src/Component └───index.js // export components (e.g. `Component.svelte`, `Component.Skeleton.svelte`) ``` -### Building +### Build #### Component Library @@ -87,11 +73,11 @@ The library should be compiled in two formats: #### Storybook -To build the Storybook, run `yarn build:storybook`. +To build the Storybook, run `yarn build`. -The Storybook should be outputted to the `docs` folder. +The Storybook should be outputted to the `storybook-static` folder. -## Submitting a Pull Request +## Submit a Pull Request ### Sync Your Fork diff --git a/docs/.cfignore b/docs/.cfignore new file mode 100644 index 00000000..e1401415 --- /dev/null +++ b/docs/.cfignore @@ -0,0 +1,3 @@ +* +!Staticfile +!public \ No newline at end of file diff --git a/docs/.gitignore b/docs/.gitignore new file mode 100644 index 00000000..6089ea11 --- /dev/null +++ b/docs/.gitignore @@ -0,0 +1,7 @@ +.DS_Store +/public/ +/node_modules/ +/src/node_modules/@sapper/ +yarn-error.log +/cypress/screenshots/ +/__sapper__/ diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 00000000..51f6a9bb --- /dev/null +++ b/docs/README.md @@ -0,0 +1,26 @@ +# docs + +This application was scaffolded using the default webpack [Sapper](https://github.com/sveltejs/sapper) template. + +## Deploying to IBM Cloud + +Deploy to IBM Cloud using the Staticfile buildpack. + +### Log in + +Log in using the IBM Cloud CLI: + +```sh +ibmcloud login + +# if using Single-Sign On (SSO): +ibmcloud login --sso +``` + +### Deploy + +```sh +yarn build +ibmcloud target --cf +ibmcloud cf push +``` \ No newline at end of file diff --git a/docs/Staticfile b/docs/Staticfile new file mode 100644 index 00000000..5a88aa0c --- /dev/null +++ b/docs/Staticfile @@ -0,0 +1,3 @@ +root: public +location_include: includes/*.conf +force_https: true \ No newline at end of file diff --git a/docs/cypress.json b/docs/cypress.json new file mode 100644 index 00000000..f2f24765 --- /dev/null +++ b/docs/cypress.json @@ -0,0 +1,5 @@ +{ + "baseUrl": "http://localhost:3000", + "video": false, + "defaultCommandTimeout": 1000 +} diff --git a/docs/cypress/integration/Button.js b/docs/cypress/integration/Button.js new file mode 100644 index 00000000..9eda6102 --- /dev/null +++ b/docs/cypress/integration/Button.js @@ -0,0 +1,11 @@ +describe("Button", () => { + beforeEach(() => { + cy.examples("Button"); + }); + + it("renders correctly", () => { + cy.get("button").then(($) => { + expect($.length).to.eql(4); + }); + }); +}); diff --git a/docs/cypress/plugins/index.js b/docs/cypress/plugins/index.js new file mode 100644 index 00000000..aa9918d2 --- /dev/null +++ b/docs/cypress/plugins/index.js @@ -0,0 +1,21 @@ +/// +// *********************************************************** +// This example plugins/index.js can be used to load plugins +// +// You can change the location of this file or turn off loading +// the plugins file with the 'pluginsFile' configuration option. +// +// You can read more here: +// https://on.cypress.io/plugins-guide +// *********************************************************** + +// This function is called when a project is opened or re-opened (e.g. due to +// the project's config changing) + +/** + * @type {Cypress.PluginConfig} + */ +module.exports = (on, config) => { + // `on` is used to hook into various events Cypress emits + // `config` is the resolved Cypress config +} diff --git a/docs/cypress/support/commands.js b/docs/cypress/support/commands.js new file mode 100644 index 00000000..5003b2cf --- /dev/null +++ b/docs/cypress/support/commands.js @@ -0,0 +1,3 @@ +Cypress.Commands.add("examples", (component) => { + cy.visit(`/examples/${component}`); +}); diff --git a/docs/cypress/support/index.js b/docs/cypress/support/index.js new file mode 100644 index 00000000..f887c29a --- /dev/null +++ b/docs/cypress/support/index.js @@ -0,0 +1 @@ +import "./commands"; diff --git a/docs/includes/header.conf b/docs/includes/header.conf new file mode 100644 index 00000000..09745592 --- /dev/null +++ b/docs/includes/header.conf @@ -0,0 +1,5 @@ +location ~* ((service-worker)\.js)$ { + add_header 'Cache-Control' 'no-store'; + expires off; + proxy_no_cache 1; +} \ No newline at end of file diff --git a/docs/manifest.yml b/docs/manifest.yml new file mode 100644 index 00000000..2adc0bb4 --- /dev/null +++ b/docs/manifest.yml @@ -0,0 +1,7 @@ +--- +applications: + - name: carbon-svelte + memory: 32M + disk_quota: 32M + buildpacks: + - https://github.com/cloudfoundry/staticfile-buildpack.git diff --git a/docs/package.json b/docs/package.json new file mode 100644 index 00000000..e761276e --- /dev/null +++ b/docs/package.json @@ -0,0 +1,25 @@ +{ + "private": true, + "scripts": { + "dev": "sapper dev", + "build": "shx rm -rf public && sapper export && shx mv __sapper__/export public", + "cy:run": "cypress run", + "cy:open": "cypress open", + "test": "run-p --race dev cy:run", + "test:tdd": "run-p --race dev cy:open" + }, + "dependencies": { + "polka": "next", + "sirv": "^1.0.1" + }, + "devDependencies": { + "carbon-components-svelte": "../", + "cypress": "^4.10.0", + "npm-run-all": "^4.1.5", + "sapper": "^0.27.16", + "shx": "^0.3.2", + "svelte": "^3.24.0", + "svelte-loader": "^2.9.0", + "webpack": "^4.7.0" + } +} diff --git a/docs/src/client.js b/docs/src/client.js new file mode 100644 index 00000000..d67c6351 --- /dev/null +++ b/docs/src/client.js @@ -0,0 +1,3 @@ +import * as sapper from "@sapper/app"; + +sapper.start({ target: document.querySelector("#sapper") }); diff --git a/docs/src/components/GlobalHeader.svelte b/docs/src/components/GlobalHeader.svelte new file mode 100644 index 00000000..a730ce28 --- /dev/null +++ b/docs/src/components/GlobalHeader.svelte @@ -0,0 +1,33 @@ + + +
+ + + + + +
diff --git a/docs/src/routes/_error.svelte b/docs/src/routes/_error.svelte new file mode 100644 index 00000000..7847f23a --- /dev/null +++ b/docs/src/routes/_error.svelte @@ -0,0 +1,21 @@ + + + + {status} + + +

{status}

+ +
+ {error.message}. + Return home +
+ +{#if process.env.NODE_ENV === 'development' && error.stack} +
{error.stack}
+{/if} diff --git a/docs/src/routes/_layout.svelte b/docs/src/routes/_layout.svelte new file mode 100644 index 00000000..a8c7cb46 --- /dev/null +++ b/docs/src/routes/_layout.svelte @@ -0,0 +1,15 @@ + + +{#if segment !== 'examples'} + + + + +{:else} + +{/if} diff --git a/docs/src/routes/about.svelte b/docs/src/routes/about.svelte new file mode 100644 index 00000000..e708243c --- /dev/null +++ b/docs/src/routes/about.svelte @@ -0,0 +1,6 @@ +

About

+ +

+ carbon-components-svelte + is the Svelte implementation of the Carbon Design System +

diff --git a/docs/src/routes/components/[slug].json.js b/docs/src/routes/components/[slug].json.js new file mode 100644 index 00000000..1f4ade0e --- /dev/null +++ b/docs/src/routes/components/[slug].json.js @@ -0,0 +1,17 @@ +import components from "./_components.js"; + +const componentsMap = new Map(); + +components.forEach((post) => { + componentsMap.set(post.slug, JSON.stringify(post)); +}); + +export function get(req, res, next) { + if (componentsMap.has(req.params.slug)) { + res.writeHead(200, { "Content-Type": "application/json" }); + res.end(componentsMap.get(req.params.slug)); + } else { + res.writeHead(404, { "Content-Type": "application/json" }); + res.end(JSON.stringify({ message: "Not found" })); + } +} diff --git a/docs/src/routes/components/[slug].svelte b/docs/src/routes/components/[slug].svelte new file mode 100644 index 00000000..f6f0076a --- /dev/null +++ b/docs/src/routes/components/[slug].svelte @@ -0,0 +1,38 @@ + + + + + + {data.title} + + +

{data.title}

+ +{#if component} + +{/if} diff --git a/docs/src/routes/components/_components.js b/docs/src/routes/components/_components.js new file mode 100644 index 00000000..1588fc53 --- /dev/null +++ b/docs/src/routes/components/_components.js @@ -0,0 +1,10 @@ +const components = [ + { + title: "Button", + }, +].map((post) => ({ + ...post, + slug: post.title.toLowerCase().replace(/\s+/g, "-"), +})); + +export default components; diff --git a/docs/src/routes/components/index.json.js b/docs/src/routes/components/index.json.js new file mode 100644 index 00000000..e2c2b80f --- /dev/null +++ b/docs/src/routes/components/index.json.js @@ -0,0 +1,6 @@ +import components from "./_components.js"; + +export function get(req, res) { + res.writeHead(200, { "Content-Type": "application/json" }); + res.end(JSON.stringify(components)); +} diff --git a/docs/src/routes/components/index.svelte b/docs/src/routes/components/index.svelte new file mode 100644 index 00000000..348c85ae --- /dev/null +++ b/docs/src/routes/components/index.svelte @@ -0,0 +1,27 @@ + + + + + + Components + + +

Components

+ + + {#each data as data, i (data.title)} + + {data.title} + + {/each} + diff --git a/docs/src/routes/examples/Button.svelte b/docs/src/routes/examples/Button.svelte new file mode 100644 index 00000000..b485cc4e --- /dev/null +++ b/docs/src/routes/examples/Button.svelte @@ -0,0 +1,8 @@ + + + + + + diff --git a/docs/src/routes/examples/_layout.svelte b/docs/src/routes/examples/_layout.svelte new file mode 100644 index 00000000..4fa864ce --- /dev/null +++ b/docs/src/routes/examples/_layout.svelte @@ -0,0 +1 @@ + diff --git a/docs/src/routes/index.svelte b/docs/src/routes/index.svelte new file mode 100644 index 00000000..f3503229 --- /dev/null +++ b/docs/src/routes/index.svelte @@ -0,0 +1,10 @@ + + +

Welcome

+ +{#each components as component} + {component.title} +{/each} diff --git a/docs/src/server.js b/docs/src/server.js new file mode 100644 index 00000000..21ca8ab1 --- /dev/null +++ b/docs/src/server.js @@ -0,0 +1,11 @@ +import sirv from "sirv"; +import polka from "polka"; +import * as sapper from "@sapper/server"; + +const { PORT, NODE_ENV } = process.env; + +polka() + .use(sirv("static", { dev: NODE_ENV === "development" }), sapper.middleware()) + .listen(PORT, (err) => { + if (err) console.log("error", err); + }); diff --git a/docs/src/service-worker.js b/docs/src/service-worker.js new file mode 100644 index 00000000..2289a556 --- /dev/null +++ b/docs/src/service-worker.js @@ -0,0 +1,82 @@ +import { timestamp, files, shell, routes } from '@sapper/service-worker'; + +const ASSETS = `cache${timestamp}`; + +// `shell` is an array of all the files generated by the bundler, +// `files` is an array of everything in the `static` directory +const to_cache = shell.concat(files); +const cached = new Set(to_cache); + +self.addEventListener('install', event => { + event.waitUntil( + caches + .open(ASSETS) + .then(cache => cache.addAll(to_cache)) + .then(() => { + self.skipWaiting(); + }) + ); +}); + +self.addEventListener('activate', event => { + event.waitUntil( + caches.keys().then(async keys => { + // delete old caches + for (const key of keys) { + if (key !== ASSETS) await caches.delete(key); + } + + self.clients.claim(); + }) + ); +}); + +self.addEventListener('fetch', event => { + if (event.request.method !== 'GET' || event.request.headers.has('range')) return; + + const url = new URL(event.request.url); + + // don't try to handle e.g. data: URIs + if (!url.protocol.startsWith('http')) return; + + // ignore dev server requests + if (url.hostname === self.location.hostname && url.port !== self.location.port) return; + + // always serve static files and bundler-generated assets from cache + if (url.host === self.location.host && cached.has(url.pathname)) { + event.respondWith(caches.match(event.request)); + return; + } + + // for pages, you might want to serve a shell `service-worker-index.html` file, + // which Sapper has generated for you. It's not right for every + // app, but if it's right for yours then uncomment this section + /* + if (url.origin === self.origin && routes.find(route => route.pattern.test(url.pathname))) { + event.respondWith(caches.match('/service-worker-index.html')); + return; + } + */ + + if (event.request.cache === 'only-if-cached') return; + + // for everything else, try the network first, falling back to + // cache if the user is offline. (If the pages never change, you + // might prefer a cache-first approach to a network-first one.) + event.respondWith( + caches + .open(`offline${timestamp}`) + .then(async cache => { + try { + const response = await fetch(event.request); + cache.put(event.request, response.clone()); + return response; + } catch(err) { + const response = await cache.match(event.request); + if (response) return response; + + throw err; + } + }) + ); +}); diff --git a/docs/src/template.html b/docs/src/template.html new file mode 100644 index 00000000..4e36656f --- /dev/null +++ b/docs/src/template.html @@ -0,0 +1,29 @@ + + + + + + + + + %sapper.base% + + + + + Carbon Components Svelte + + %sapper.styles% %sapper.head% + + +
%sapper.html%
+ + %sapper.scripts% + + diff --git a/docs/static/favicon.png b/docs/static/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..4b75896b7e37017e70f78cbf86f5b74df78bafea GIT binary patch literal 7382 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 IM6N<$f@GQNqyPW_ literal 0 HcmV?d00001 diff --git a/docs/static/logo-192.png b/docs/static/logo-192.png new file mode 100644 index 0000000000000000000000000000000000000000..e2ba3e9e376ebc271eec5fab3c5febac975bc409 GIT binary patch literal 12677 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

|chNoord6i~IaHFqv#YRn$!2 z3Wl;Z^(c2Mw_#1(C*LQZtx*$w5(Fm2*FQpaLjZGEJ`iSq!z$M+GtJe)Jwf1)xQ94%~Uu*T@Kn8UwyL{9K9&_D$=6P1uW zHF$G*$h;V`H{Uv`kH9N!Rp1@p=FYmB=_;2PR%thvZX`uFlGV~<~p z({FqCn3XNSCM}VD(g9jDnm#2zG3@r2%$yL*j)dpbAKA5s$BxQhf8PsYxkYx6#(zm> z>rWlZy%W1zds+Jo9pcYM3Adp`lq#xjF4-d*W`tYA=das*C3rLP6fzku$zA1v@KW*? zQ$&=cZu;jW8qTxKNr%=x`erFauHZxwX!68L4t?x&Vm{%;MGDtQ#U);Ew0S?|CDGeKCAI6Tid^YK^xY{)Gvq-4oII|#q`|K=9xn9 zm>r5Cr75#d)`y=1@foFyJ!_5g#!*HSjRyhx@0|w*%x-s}n%VRFFaexj`WV#u*^EaK zRr{mtEX+;1v_EVwVS^I9CDqETtq_DQ+C}KM2Mk=>Px# literal 0 HcmV?d00001 diff --git a/docs/static/logo-512.png b/docs/static/logo-512.png new file mode 100644 index 0000000000000000000000000000000000000000..17eec236370a8806b79ec3637fd28466917bdb10 GIT binary patch literal 40451 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