├── html-test
├── README.md
├── index.js
├── my-element.js
├── demo
│ └── index.html
├── src
│ └── MyElement.js
├── package.json
└── test
│ └── my-element.test.html
├── import-maps
├── README.md
├── index.js
├── my-element.js
├── package.json
├── src
│ └── MyElement.js
├── test
│ └── my-element.test.js
└── web-test-runner.config.mjs
├── json-modules
├── README.md
├── src
│ ├── data.json
│ └── MyElement.js
├── index.js
├── my-element.js
├── web-test-runner.config.mjs
├── demo
│ └── index.html
├── web-dev-server.config.mjs
├── test
│ └── my-element.test.js
└── package.json
├── lit-element
├── README.md
├── index.js
├── my-element.js
├── demo
│ └── index.html
├── src
│ └── MyElement.js
├── package.json
└── test
│ └── my-element.test.js
├── snowpack-react
├── .npmignore
├── .prettierrc
├── public
│ ├── robots.txt
│ ├── favicon.ico
│ └── index.html
├── web-test-runner.config.js
├── src
│ ├── App.test.jsx
│ ├── index.css
│ ├── index.jsx
│ ├── App.css
│ ├── App.jsx
│ └── logo.svg
├── snowpack.config.js
├── README.md
└── package.json
├── storybook
├── README.md
├── index.js
├── .storybook
│ ├── main.js
│ └── server.config.mjs
├── my-element.js
├── package.json
├── src
│ └── MyElement.js
└── stories
│ └── MyElement.stories.js
├── visual-regression
├── README.md
├── index.js
├── my-element.js
├── demo
│ └── index.html
├── web-test-runner.config.mjs
├── test
│ └── my-element.test.js
├── src
│ └── MyElement.js
└── package.json
├── snowpack-lit
├── src
│ ├── index.ts
│ ├── app-root.test.ts
│ └── app-root.ts
├── .gitignore
├── .prettierrc
├── public
│ ├── robots.txt
│ ├── favicon.ico
│ ├── index.css
│ └── index.html
├── babel.config.json
├── web-test-runner.config.js
├── snowpack.config.js
├── README.md
├── tsconfig.json
├── package.json
├── LICENSE
└── types
│ └── static.d.ts
├── mock-es-module
├── README.md
├── test
│ ├── mocks
│ │ └── postData.js
│ └── postMessage.test.html
├── src
│ ├── postData.js
│ └── postMessage.js
├── web-test-runner.config.mjs
└── package.json
├── snowpack-svelte
├── .gitignore
├── public
│ ├── robots.txt
│ ├── favicon.ico
│ ├── index.html
│ └── logo.svg
├── web-test-runner.config.js
├── src
│ ├── App.test.js
│ ├── index.js
│ └── App.svelte
├── package.json
├── snowpack.config.js
├── README.md
└── LICENSE
├── playwright
├── index.js
├── my-element.js
├── demo
│ └── index.html
├── src
│ └── MyElement.js
├── package.json
└── test
│ └── my-element.test.js
├── puppeteer
├── index.js
├── my-element.js
├── demo
│ └── index.html
├── src
│ └── MyElement.js
├── package.json
└── test
│ └── my-element.test.js
├── saucelabs
├── index.js
├── my-element.js
├── demo
│ └── index.html
├── src
│ └── MyElement.js
├── package.json
├── test
│ └── my-element.test.js
└── web-test-runner.config.mjs
├── lit-element-ts-esbuild
├── index.ts
├── my-element.ts
├── web-dev-server.config.mjs
├── web-test-runner.config.mjs
├── demo
│ └── index.html
├── tsconfig.json
├── src
│ └── MyElement.ts
├── package.json
└── test
│ └── my-element.test.ts
├── lit-element-ts-tsc
├── index.ts
├── my-element.ts
├── demo
│ └── index.html
├── tsconfig.json
├── src
│ └── MyElement.ts
├── package.json
└── test
│ └── my-element.test.ts
├── preact-htm
├── web-test-runner.config.mjs
├── src
│ └── App.js
├── test
│ ├── test-helpers.js
│ └── app.test.js
├── demo
│ └── index.html
└── package.json
├── react-htm
├── web-test-runner.config.mjs
├── src
│ └── App.js
├── test
│ ├── test-helpers.js
│ └── app.test.js
├── demo
│ └── index.html
└── package.json
├── guides
├── dev-server
│ ├── loading-modules
│ │ ├── src
│ │ │ └── message.js
│ │ ├── package.json
│ │ └── demo
│ │ │ └── index.html
│ ├── getting-started
│ │ ├── demo
│ │ │ └── index.html
│ │ └── package.json
│ ├── writing-plugins
│ │ ├── demo
│ │ │ ├── index.html
│ │ │ └── env.html
│ │ ├── src
│ │ │ └── logger.js
│ │ ├── web-dev-server.env.mjs
│ │ ├── web-dev-server.inject.mjs
│ │ └── package.json
│ ├── typescript-and-jsx
│ │ ├── src
│ │ │ ├── logger.ts
│ │ │ └── app.jsx
│ │ ├── web-dev-server.ts.mjs
│ │ ├── demo
│ │ │ ├── jsx.html
│ │ │ └── ts.html
│ │ ├── web-dev-server.jsx.mjs
│ │ └── package.json
│ ├── using-plugins
│ │ ├── src
│ │ │ ├── logger.js
│ │ │ └── app.jsx
│ │ ├── demo
│ │ │ ├── babel.html
│ │ │ ├── index.html
│ │ │ └── commonjs.html
│ │ ├── web-dev-server.commonjs.mjs
│ │ ├── web-dev-server.config.mjs
│ │ ├── web-dev-server.babel.mjs
│ │ └── package.json
│ └── proxy-to-other-servers
│ │ ├── web-dev-server.config.mjs
│ │ ├── api-server.mjs
│ │ ├── package.json
│ │ └── demo
│ │ └── index.html
└── test-runner
│ ├── getting-started
│ ├── src
│ │ └── sum.js
│ ├── test
│ │ └── sum.test.js
│ └── package.json
│ ├── responsive
│ ├── src
│ │ ├── isMobile.js
│ │ └── styles.css
│ ├── package.json
│ └── test
│ │ ├── isMobile.test.js
│ │ └── my-card.test.html
│ ├── playwright
│ ├── src
│ │ ├── sum.js
│ │ └── calc.js
│ ├── test
│ │ ├── calc.test.js
│ │ └── sum.test.js
│ └── package.json
│ ├── watch-and-debug
│ ├── src
│ │ ├── sum.js
│ │ └── calc.js
│ ├── test
│ │ ├── calc.test.js
│ │ └── sum.test.js
│ └── package.json
│ ├── typescript
│ ├── src
│ │ ├── sum.ts
│ │ ├── sum.js
│ │ └── sum.js.map
│ ├── test
│ │ ├── sum.test.ts
│ │ ├── sum.test.js
│ │ └── sum.test.js.map
│ ├── package.json
│ └── tsconfig.json
│ └── test-runner-coverage
│ ├── src
│ └── calc.js
│ ├── package.json
│ └── test
│ └── calc.test.js
├── renovate.json
├── react-jsx
├── src
│ └── App.jsx
├── demo
│ ├── index.html
│ └── index.jsx
├── web-dev-server.config.mjs
├── web-test-runner.config.mjs
├── test
│ ├── test-helpers.jsx
│ └── app.test.jsx
└── package.json
├── preact-tsx
├── demo
│ ├── index.tsx
│ └── index.html
├── src
│ └── App.tsx
├── web-dev-server.config.mjs
├── web-test-runner.config.mjs
├── test
│ ├── test-helpers.tsx
│ └── app.test.tsx
├── package.json
└── tsconfig.json
├── preact-jsx
├── demo
│ ├── index.jsx
│ └── index.html
├── src
│ └── App.jsx
├── web-dev-server.config.mjs
├── web-test-runner.config.mjs
├── test
│ ├── test-helpers.jsx
│ └── app.test.jsx
└── package.json
├── react-tsx
├── demo
│ ├── index.html
│ └── index.tsx
├── src
│ └── App.tsx
├── web-dev-server.config.mjs
├── web-test-runner.config.mjs
├── test
│ ├── test-helpers.tsx
│ └── app.test.tsx
├── package.json
└── tsconfig.json
├── .gitignore
└── .github
└── workflows
└── verify.yml
/html-test/README.md:
--------------------------------------------------------------------------------
1 | # Lit-element example
--------------------------------------------------------------------------------
/import-maps/README.md:
--------------------------------------------------------------------------------
1 | # Import maps example
--------------------------------------------------------------------------------
/json-modules/README.md:
--------------------------------------------------------------------------------
1 | # Lit-element example
--------------------------------------------------------------------------------
/lit-element/README.md:
--------------------------------------------------------------------------------
1 | # Lit-element example
--------------------------------------------------------------------------------
/snowpack-react/.npmignore:
--------------------------------------------------------------------------------
1 | .build
2 | build
--------------------------------------------------------------------------------
/storybook/README.md:
--------------------------------------------------------------------------------
1 | # Lit-element example
--------------------------------------------------------------------------------
/visual-regression/README.md:
--------------------------------------------------------------------------------
1 | # Lit-element example
--------------------------------------------------------------------------------
/snowpack-lit/src/index.ts:
--------------------------------------------------------------------------------
1 | import './app-root';
2 |
--------------------------------------------------------------------------------
/json-modules/src/data.json:
--------------------------------------------------------------------------------
1 | { "message": "Hello world" }
2 |
--------------------------------------------------------------------------------
/mock-es-module/README.md:
--------------------------------------------------------------------------------
1 | # import maps with html test example
--------------------------------------------------------------------------------
/snowpack-lit/.gitignore:
--------------------------------------------------------------------------------
1 | .snowpack
2 | build
3 | node_modules
--------------------------------------------------------------------------------
/snowpack-svelte/.gitignore:
--------------------------------------------------------------------------------
1 | .snowpack
2 | build
3 | node_modules
--------------------------------------------------------------------------------
/html-test/index.js:
--------------------------------------------------------------------------------
1 | export { MyElement } from './src/MyElement.js';
2 |
--------------------------------------------------------------------------------
/import-maps/index.js:
--------------------------------------------------------------------------------
1 | export { MyElement } from './src/MyElement.js';
2 |
--------------------------------------------------------------------------------
/json-modules/index.js:
--------------------------------------------------------------------------------
1 | export { MyElement } from './src/MyElement.js';
2 |
--------------------------------------------------------------------------------
/lit-element/index.js:
--------------------------------------------------------------------------------
1 | export { MyElement } from './src/MyElement.js';
2 |
--------------------------------------------------------------------------------
/playwright/index.js:
--------------------------------------------------------------------------------
1 | export { MyElement } from './src/MyElement.js';
2 |
--------------------------------------------------------------------------------
/puppeteer/index.js:
--------------------------------------------------------------------------------
1 | export { MyElement } from './src/MyElement.js';
2 |
--------------------------------------------------------------------------------
/saucelabs/index.js:
--------------------------------------------------------------------------------
1 | export { MyElement } from './src/MyElement.js';
2 |
--------------------------------------------------------------------------------
/storybook/index.js:
--------------------------------------------------------------------------------
1 | export { MyElement } from './src/MyElement.js';
2 |
--------------------------------------------------------------------------------
/visual-regression/index.js:
--------------------------------------------------------------------------------
1 | export { MyElement } from './src/MyElement.js';
2 |
--------------------------------------------------------------------------------
/lit-element-ts-esbuild/index.ts:
--------------------------------------------------------------------------------
1 | export { MyElement } from './src/MyElement.js';
2 |
--------------------------------------------------------------------------------
/lit-element-ts-tsc/index.ts:
--------------------------------------------------------------------------------
1 | export { MyElement } from './src/MyElement.js';
2 |
--------------------------------------------------------------------------------
/preact-htm/web-test-runner.config.mjs:
--------------------------------------------------------------------------------
1 | export default {
2 | nodeResolve: true,
3 | };
4 |
--------------------------------------------------------------------------------
/react-htm/web-test-runner.config.mjs:
--------------------------------------------------------------------------------
1 | export default {
2 | nodeResolve: true,
3 | };
4 |
--------------------------------------------------------------------------------
/snowpack-lit/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "singleQuote": true,
3 | "trailingComma": "all"
4 | }
5 |
--------------------------------------------------------------------------------
/guides/dev-server/loading-modules/src/message.js:
--------------------------------------------------------------------------------
1 | export const message = "This is a message";
2 |
--------------------------------------------------------------------------------
/snowpack-react/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "singleQuote": true,
3 | "trailingComma": "all"
4 | }
5 |
--------------------------------------------------------------------------------
/guides/test-runner/getting-started/src/sum.js:
--------------------------------------------------------------------------------
1 | export function sum(a, b) {
2 | return a + b;
3 | }
4 |
--------------------------------------------------------------------------------
/renovate.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": [
3 | "config:base"
4 | ],
5 | "automerge": true
6 | }
7 |
--------------------------------------------------------------------------------
/mock-es-module/test/mocks/postData.js:
--------------------------------------------------------------------------------
1 | import { stub } from 'sinon';
2 |
3 | export const postData = stub();
4 |
--------------------------------------------------------------------------------
/snowpack-lit/public/robots.txt:
--------------------------------------------------------------------------------
1 | # https://www.robotstxt.org/robotstxt.html
2 | User-agent: *
3 | Disallow:
4 |
--------------------------------------------------------------------------------
/snowpack-react/public/robots.txt:
--------------------------------------------------------------------------------
1 | # https://www.robotstxt.org/robotstxt.html
2 | User-agent: *
3 | Disallow:
4 |
--------------------------------------------------------------------------------
/snowpack-svelte/public/robots.txt:
--------------------------------------------------------------------------------
1 | # https://www.robotstxt.org/robotstxt.html
2 | User-agent: *
3 | Disallow:
4 |
--------------------------------------------------------------------------------
/storybook/.storybook/main.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | stories: ['../stories/**/*.stories.@(js|jsx|ts|tsx)'],
3 | };
--------------------------------------------------------------------------------
/snowpack-lit/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/modernweb-dev/example-projects/HEAD/snowpack-lit/public/favicon.ico
--------------------------------------------------------------------------------
/snowpack-react/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/modernweb-dev/example-projects/HEAD/snowpack-react/public/favicon.ico
--------------------------------------------------------------------------------
/guides/dev-server/getting-started/demo/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Hello world!
5 |
6 |
--------------------------------------------------------------------------------
/snowpack-svelte/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/modernweb-dev/example-projects/HEAD/snowpack-svelte/public/favicon.ico
--------------------------------------------------------------------------------
/guides/dev-server/writing-plugins/demo/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Hello world!
5 |
6 |
--------------------------------------------------------------------------------
/html-test/my-element.js:
--------------------------------------------------------------------------------
1 | import { MyElement } from './src/MyElement.js';
2 |
3 | window.customElements.define('my-element', MyElement);
4 |
--------------------------------------------------------------------------------
/import-maps/my-element.js:
--------------------------------------------------------------------------------
1 | import { MyElement } from './src/MyElement.js';
2 |
3 | window.customElements.define('my-element', MyElement);
4 |
--------------------------------------------------------------------------------
/json-modules/my-element.js:
--------------------------------------------------------------------------------
1 | import { MyElement } from './src/MyElement.js';
2 |
3 | window.customElements.define('my-element', MyElement);
4 |
--------------------------------------------------------------------------------
/lit-element/my-element.js:
--------------------------------------------------------------------------------
1 | import { MyElement } from './src/MyElement.js';
2 |
3 | window.customElements.define('my-element', MyElement);
4 |
--------------------------------------------------------------------------------
/playwright/my-element.js:
--------------------------------------------------------------------------------
1 | import { MyElement } from './src/MyElement.js';
2 |
3 | window.customElements.define('my-element', MyElement);
4 |
--------------------------------------------------------------------------------
/puppeteer/my-element.js:
--------------------------------------------------------------------------------
1 | import { MyElement } from './src/MyElement.js';
2 |
3 | window.customElements.define('my-element', MyElement);
4 |
--------------------------------------------------------------------------------
/react-jsx/src/App.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | export default function App() {
3 | return Hello, World!
4 | }
5 |
--------------------------------------------------------------------------------
/saucelabs/my-element.js:
--------------------------------------------------------------------------------
1 | import { MyElement } from './src/MyElement.js';
2 |
3 | window.customElements.define('my-element', MyElement);
4 |
--------------------------------------------------------------------------------
/storybook/my-element.js:
--------------------------------------------------------------------------------
1 | import { MyElement } from './src/MyElement.js';
2 |
3 | window.customElements.define('my-element', MyElement);
4 |
--------------------------------------------------------------------------------
/lit-element-ts-tsc/my-element.ts:
--------------------------------------------------------------------------------
1 | import { MyElement } from './src/MyElement';
2 |
3 | window.customElements.define('my-element', MyElement);
4 |
--------------------------------------------------------------------------------
/visual-regression/my-element.js:
--------------------------------------------------------------------------------
1 | import { MyElement } from './src/MyElement.js';
2 |
3 | window.customElements.define('my-element', MyElement);
4 |
--------------------------------------------------------------------------------
/guides/test-runner/responsive/src/isMobile.js:
--------------------------------------------------------------------------------
1 | export function isMobile() {
2 | return !!window.matchMedia('(max-width: 1024px)').matches;
3 | }
4 |
--------------------------------------------------------------------------------
/lit-element-ts-esbuild/my-element.ts:
--------------------------------------------------------------------------------
1 | import { MyElement } from './src/MyElement';
2 |
3 | window.customElements.define('my-element', MyElement);
4 |
--------------------------------------------------------------------------------
/preact-tsx/demo/index.tsx:
--------------------------------------------------------------------------------
1 | import { render, h } from "preact";
2 | import App from "../src/App";
3 |
4 | render(, document.getElementById('app')!);
--------------------------------------------------------------------------------
/preact-jsx/demo/index.jsx:
--------------------------------------------------------------------------------
1 | import { render, h } from "preact";
2 | import App from "../src/App.jsx";
3 |
4 | render(, document.getElementById('app'));
--------------------------------------------------------------------------------
/guides/dev-server/typescript-and-jsx/src/logger.ts:
--------------------------------------------------------------------------------
1 | const logger: Console = console;
2 |
3 | export function logMessage(msg: string) {
4 | logger.log(msg);
5 | }
--------------------------------------------------------------------------------
/json-modules/web-test-runner.config.mjs:
--------------------------------------------------------------------------------
1 | import devServerConfig from "./web-dev-server.config.mjs";
2 |
3 | export default {
4 | ...devServerConfig,
5 | };
6 |
--------------------------------------------------------------------------------
/guides/dev-server/using-plugins/src/logger.js:
--------------------------------------------------------------------------------
1 | export function logDebug(msg) {
2 | if (process.env.NODE_ENV === "development") {
3 | console.log(msg);
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/mock-es-module/src/postData.js:
--------------------------------------------------------------------------------
1 | export function postData(endpoint, data) {
2 | return fetch(`/api/${endpoint}`, { method: 'POST', body: JSON.stringify(data) });
3 | }
4 |
--------------------------------------------------------------------------------
/mock-es-module/src/postMessage.js:
--------------------------------------------------------------------------------
1 | import { postData } from './postData.js';
2 |
3 | export function sendMessage(message) {
4 | return postData('message', { message });
5 | }
6 |
--------------------------------------------------------------------------------
/lit-element-ts-esbuild/web-dev-server.config.mjs:
--------------------------------------------------------------------------------
1 | import { esbuildPlugin } from "@web/dev-server-esbuild";
2 |
3 | export default {
4 | plugins: [esbuildPlugin({ ts: true })],
5 | };
6 |
--------------------------------------------------------------------------------
/preact-jsx/demo/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/preact-tsx/demo/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/react-jsx/demo/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/react-tsx/demo/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/guides/test-runner/playwright/src/sum.js:
--------------------------------------------------------------------------------
1 | export function sum(...numbers) {
2 | let sum = 0;
3 | for (const number of numbers) {
4 | sum += number;
5 | }
6 | return sum;
7 | }
8 |
--------------------------------------------------------------------------------
/html-test/demo/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/lit-element-ts-esbuild/web-test-runner.config.mjs:
--------------------------------------------------------------------------------
1 | import { esbuildPlugin } from "@web/dev-server-esbuild";
2 |
3 | export default {
4 | plugins: [esbuildPlugin({ ts: true })],
5 | };
6 |
--------------------------------------------------------------------------------
/playwright/demo/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/puppeteer/demo/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/react-tsx/src/App.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | export default function App() {
3 | return (
4 |
5 |
Hello, World!
6 |
7 | );
8 | }
9 |
--------------------------------------------------------------------------------
/saucelabs/demo/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/guides/test-runner/watch-and-debug/src/sum.js:
--------------------------------------------------------------------------------
1 | export function sum(...numbers) {
2 | let sum = 0;
3 | for (const number of numbers) {
4 | sum += number;
5 | }
6 | return sum;
7 | }
8 |
--------------------------------------------------------------------------------
/json-modules/demo/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/lit-element/demo/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/mock-es-module/web-test-runner.config.mjs:
--------------------------------------------------------------------------------
1 | import { importMapsPlugin } from "@web/dev-server-import-maps";
2 |
3 | export default {
4 | plugins: [
5 | importMapsPlugin(),
6 | ],
7 | };
8 |
--------------------------------------------------------------------------------
/react-jsx/demo/index.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom';
3 | import App from "../src/App.jsx";
4 |
5 | ReactDOM.render(, document.getElementById('app'));
6 |
--------------------------------------------------------------------------------
/react-tsx/demo/index.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom';
3 | import App from "../src/App";
4 |
5 | ReactDOM.render(, document.getElementById('app')!);
6 |
--------------------------------------------------------------------------------
/guides/dev-server/typescript-and-jsx/web-dev-server.ts.mjs:
--------------------------------------------------------------------------------
1 | import { esbuildPlugin } from "@web/dev-server-esbuild";
2 |
3 | export default {
4 | plugins: [esbuildPlugin({ ts: true })],
5 | };
6 |
7 |
--------------------------------------------------------------------------------
/guides/test-runner/typescript/src/sum.ts:
--------------------------------------------------------------------------------
1 | export function sum(...numbers: number[]) {
2 | let sum = 0;
3 | for (const number of numbers) {
4 | sum += number;
5 | }
6 | return sum;
7 | }
8 |
--------------------------------------------------------------------------------
/visual-regression/demo/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/guides/dev-server/using-plugins/src/app.jsx:
--------------------------------------------------------------------------------
1 | import { h, render } from 'preact';
2 |
3 | function App() {
4 | return Hello world
5 | }
6 |
7 | render(, document.getElementById('app'));
8 |
--------------------------------------------------------------------------------
/lit-element-ts-esbuild/demo/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/visual-regression/web-test-runner.config.mjs:
--------------------------------------------------------------------------------
1 | import { visualRegressionPlugin } from "@web/test-runner-visual-regression/plugin";
2 |
3 | export default {
4 | plugins: [visualRegressionPlugin()],
5 | };
6 |
--------------------------------------------------------------------------------
/guides/dev-server/typescript-and-jsx/src/app.jsx:
--------------------------------------------------------------------------------
1 | import { h, render } from 'preact';
2 |
3 | function App() {
4 | return Hello world
5 | }
6 |
7 | render(, document.getElementById('app'));
8 |
--------------------------------------------------------------------------------
/guides/dev-server/using-plugins/demo/babel.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/lit-element-ts-tsc/demo/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/guides/dev-server/typescript-and-jsx/demo/jsx.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/guides/dev-server/writing-plugins/src/logger.js:
--------------------------------------------------------------------------------
1 | import { environment } from "/environment.js";
2 |
3 | export function logDebug(msg) {
4 | if (environment === "development") {
5 | console.log(msg);
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/guides/test-runner/responsive/src/styles.css:
--------------------------------------------------------------------------------
1 | .card {
2 | background: rgb(0, 255, 0);
3 | }
4 |
5 | @media screen and (min-width: 1024px) {
6 | .card {
7 | background: rgb(255, 0, 0);
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/guides/test-runner/typescript/src/sum.js:
--------------------------------------------------------------------------------
1 | export function sum(...numbers) {
2 | let sum = 0;
3 | for (const number of numbers) {
4 | sum += number;
5 | }
6 | return sum;
7 | }
8 | //# sourceMappingURL=sum.js.map
--------------------------------------------------------------------------------
/guides/test-runner/playwright/src/calc.js:
--------------------------------------------------------------------------------
1 | import { sum } from './sum.js';
2 |
3 | export function calc(inputString) {
4 | const numbers = inputString.split('+').map(number => parseInt(number));
5 | return sum(...numbers);
6 | }
7 |
--------------------------------------------------------------------------------
/guides/test-runner/watch-and-debug/src/calc.js:
--------------------------------------------------------------------------------
1 | import { sum } from './sum.js';
2 |
3 | export function calc(inputString) {
4 | const numbers = inputString.split('+').map(number => parseInt(number));
5 | return sum(...numbers);
6 | }
7 |
--------------------------------------------------------------------------------
/storybook/.storybook/server.config.mjs:
--------------------------------------------------------------------------------
1 | import { storybookPlugin } from "@web/dev-server-storybook";
2 |
3 | export default {
4 | nodeResolve: true,
5 | open: true,
6 | plugins: [storybookPlugin({ type: "web-components" })],
7 | };
8 |
--------------------------------------------------------------------------------
/json-modules/src/MyElement.js:
--------------------------------------------------------------------------------
1 | import { html, LitElement } from "lit-element";
2 | import data from "./data.json";
3 |
4 | export class MyElement extends LitElement {
5 | render() {
6 | return html` ${data.message}
`;
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/preact-jsx/src/App.jsx:
--------------------------------------------------------------------------------
1 | import { h, Component } from 'preact';
2 |
3 | export default class App extends Component {
4 | render() {
5 | return (
6 |
7 |
Hello, World!
8 |
9 | );
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/preact-tsx/src/App.tsx:
--------------------------------------------------------------------------------
1 | import { h, Component } from 'preact';
2 |
3 | export default class App extends Component {
4 | render() {
5 | return (
6 |
7 |
Hello, World!
8 |
9 | );
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/guides/dev-server/typescript-and-jsx/web-dev-server.jsx.mjs:
--------------------------------------------------------------------------------
1 | import { esbuildPlugin } from "@web/dev-server-esbuild";
2 |
3 | export default {
4 | plugins: [
5 | esbuildPlugin({ jsx: true, jsxFactory: "h", jsxFragment: "Fragment" }),
6 | ],
7 | };
8 |
--------------------------------------------------------------------------------
/preact-jsx/web-dev-server.config.mjs:
--------------------------------------------------------------------------------
1 | import { esbuildPlugin } from "@web/dev-server-esbuild";
2 |
3 | export default {
4 | nodeResolve: true,
5 | plugins: [
6 | esbuildPlugin({ jsx: true, jsxFactory: "h", jsxFragment: "Fragment" }),
7 | ],
8 | };
9 |
--------------------------------------------------------------------------------
/preact-jsx/web-test-runner.config.mjs:
--------------------------------------------------------------------------------
1 | import { esbuildPlugin } from "@web/dev-server-esbuild";
2 |
3 | export default {
4 | nodeResolve: true,
5 | plugins: [
6 | esbuildPlugin({ jsx: true, jsxFactory: "h", jsxFragment: "Fragment" }),
7 | ],
8 | };
9 |
--------------------------------------------------------------------------------
/preact-tsx/web-dev-server.config.mjs:
--------------------------------------------------------------------------------
1 | import { esbuildPlugin } from "@web/dev-server-esbuild";
2 |
3 | export default {
4 | nodeResolve: true,
5 | plugins: [
6 | esbuildPlugin({ tsx: true, jsxFactory: "h", jsxFragment: "Fragment" }),
7 | ],
8 | };
9 |
--------------------------------------------------------------------------------
/preact-tsx/web-test-runner.config.mjs:
--------------------------------------------------------------------------------
1 | import { esbuildPlugin } from "@web/dev-server-esbuild";
2 |
3 | export default {
4 | nodeResolve: true,
5 | plugins: [
6 | esbuildPlugin({ tsx: true, jsxFactory: "h", jsxFragment: "Fragment" }),
7 | ],
8 | };
9 |
--------------------------------------------------------------------------------
/guides/test-runner/getting-started/test/sum.test.js:
--------------------------------------------------------------------------------
1 | import { expect } from "@esm-bundle/chai";
2 | import { sum } from "../src/sum.js";
3 |
4 | it("sums up 2 numbers", () => {
5 | expect(sum(1, 1)).to.equal(2);
6 | expect(sum(3, 12)).to.equal(15);
7 | });
8 |
--------------------------------------------------------------------------------
/snowpack-lit/public/index.css:
--------------------------------------------------------------------------------
1 | body {
2 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
3 | color: white;
4 | margin: 0;
5 | padding: 0;
6 | }
7 |
--------------------------------------------------------------------------------
/guides/dev-server/writing-plugins/demo/env.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
--------------------------------------------------------------------------------
/snowpack-lit/babel.config.json:
--------------------------------------------------------------------------------
1 | {
2 | "presets": ["@babel/preset-typescript"],
3 | "plugins": [
4 | ["@babel/plugin-proposal-decorators", { "decoratorsBeforeExport": true }],
5 | ["@babel/plugin-proposal-class-properties", { "loose": true }]
6 | ]
7 | }
8 |
--------------------------------------------------------------------------------
/guides/dev-server/using-plugins/demo/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/guides/test-runner/playwright/test/calc.test.js:
--------------------------------------------------------------------------------
1 | import { expect } from "@esm-bundle/chai";
2 | import { calc } from '../src/calc.js';
3 |
4 | it('calculates sums', () => {
5 | expect(calc('1 + 1 + 1')).to.equal(3);
6 | expect(calc('2 + 6 + 12')).to.equal(20);
7 | });
8 |
--------------------------------------------------------------------------------
/react-jsx/web-dev-server.config.mjs:
--------------------------------------------------------------------------------
1 | import { esbuildPlugin } from "@web/dev-server-esbuild";
2 |
3 | export default {
4 | nodeResolve: true,
5 | plugins: [
6 | esbuildPlugin({ jsx: true, jsxFactory: "React.createElement", jsxFragment: "Fragment" }),
7 | ],
8 | };
9 |
--------------------------------------------------------------------------------
/react-tsx/web-dev-server.config.mjs:
--------------------------------------------------------------------------------
1 | import { esbuildPlugin } from "@web/dev-server-esbuild";
2 |
3 | export default {
4 | nodeResolve: true,
5 | plugins: [
6 | esbuildPlugin({ tsx: true, jsxFactory: "React.createElement", jsxFragment: "Fragment" }),
7 | ],
8 | };
9 |
--------------------------------------------------------------------------------
/guides/test-runner/watch-and-debug/test/calc.test.js:
--------------------------------------------------------------------------------
1 | import { expect } from "@esm-bundle/chai";
2 | import { calc } from '../src/calc.js';
3 |
4 | it('calculates sums', () => {
5 | expect(calc('1 + 1 + 1')).to.equal(3);
6 | expect(calc('2 + 6 + 12')).to.equal(20);
7 | });
8 |
--------------------------------------------------------------------------------
/react-jsx/web-test-runner.config.mjs:
--------------------------------------------------------------------------------
1 | import { esbuildPlugin } from "@web/dev-server-esbuild";
2 |
3 | export default {
4 | nodeResolve: true,
5 | plugins: [
6 | esbuildPlugin({ jsx: true, jsxFactory: "React.createElement", jsxFragment: "Fragment" }),
7 | ],
8 | };
9 |
--------------------------------------------------------------------------------
/react-tsx/web-test-runner.config.mjs:
--------------------------------------------------------------------------------
1 | import { esbuildPlugin } from "@web/dev-server-esbuild";
2 |
3 | export default {
4 | nodeResolve: true,
5 | plugins: [
6 | esbuildPlugin({ tsx: true, jsxFactory: "React.createElement", jsxFragment: "Fragment" }),
7 | ],
8 | };
9 |
--------------------------------------------------------------------------------
/guides/dev-server/typescript-and-jsx/demo/ts.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/react-htm/src/App.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import htm from 'htm';
3 |
4 | const html = htm.bind(React.createElement);
5 |
6 | export default function App() {
7 | return html`
8 |
9 |
Hello, World!
10 |
11 | `;
12 | }
13 |
--------------------------------------------------------------------------------
/guides/test-runner/typescript/src/sum.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"sum.js","sourceRoot":"","sources":["sum.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,GAAG,CAAC,GAAG,OAAiB;IACtC,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;QAC5B,GAAG,IAAI,MAAM,CAAC;KACf;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
--------------------------------------------------------------------------------
/preact-htm/src/App.js:
--------------------------------------------------------------------------------
1 | import { Component } from 'preact';
2 | import { html } from 'htm/preact';
3 |
4 | export default class App extends Component {
5 | render() {
6 | return html`
7 |
8 |
Hello, World!
9 |
10 | `;
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/guides/dev-server/using-plugins/demo/commonjs.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/guides/dev-server/proxy-to-other-servers/web-dev-server.config.mjs:
--------------------------------------------------------------------------------
1 | import proxy from "koa-proxies";
2 | import "./api-server.mjs";
3 |
4 | export default {
5 | port: 8000,
6 | middleware: [
7 | proxy("/api/", {
8 | target: "http://localhost:9000/",
9 | }),
10 | ],
11 | };
12 |
--------------------------------------------------------------------------------
/json-modules/web-dev-server.config.mjs:
--------------------------------------------------------------------------------
1 | import { fromRollup } from "@web/dev-server-rollup";
2 | import rollupJson from "@rollup/plugin-json";
3 |
4 | const json = fromRollup(rollupJson);
5 |
6 | export default {
7 | mimeTypes: {
8 | "**/*.json": "js",
9 | },
10 | plugins: [json()],
11 | };
12 |
--------------------------------------------------------------------------------
/preact-htm/test/test-helpers.js:
--------------------------------------------------------------------------------
1 | import { render } from "preact";
2 |
3 | export function fixture(jsx) {
4 | const wrapper = document.createElement("div");
5 | render(jsx, wrapper);
6 | return {
7 | element: wrapper.firstElementChild,
8 | restoreFixture: () => wrapper.remove(),
9 | };
10 | }
11 |
--------------------------------------------------------------------------------
/preact-jsx/test/test-helpers.jsx:
--------------------------------------------------------------------------------
1 | import { render } from 'preact';
2 |
3 | export function fixture(jsx) {
4 | const wrapper = document.createElement('div');
5 | render(jsx, wrapper);
6 | return {
7 | element: wrapper.firstElementChild,
8 | restoreFixture: () => wrapper.remove(),
9 | };
10 | }
11 |
--------------------------------------------------------------------------------
/guides/dev-server/proxy-to-other-servers/api-server.mjs:
--------------------------------------------------------------------------------
1 | import http from "http";
2 |
3 | const server = http.createServer((request, response) => {
4 | if (request.url === "/api/message") {
5 | response.writeHead(200);
6 | response.end("Hello from API");
7 | }
8 | });
9 |
10 | server.listen(9000);
11 |
--------------------------------------------------------------------------------
/snowpack-lit/web-test-runner.config.js:
--------------------------------------------------------------------------------
1 | // NODE_ENV=test - Needed by "@snowpack/web-test-runner-plugin"
2 | process.env.NODE_ENV = 'test';
3 |
4 | module.exports = {
5 | coverageConfig: {
6 | exclude: ['**/*/_snowpack/**/*'],
7 | },
8 | plugins: [require('@snowpack/web-test-runner-plugin')()],
9 | };
10 |
--------------------------------------------------------------------------------
/snowpack-react/web-test-runner.config.js:
--------------------------------------------------------------------------------
1 | // NODE_ENV=test - Needed by "@snowpack/web-test-runner-plugin"
2 | process.env.NODE_ENV = 'test';
3 |
4 | module.exports = {
5 | coverageConfig: {
6 | exclude: ['**/*/_snowpack/**/*'],
7 | },
8 | plugins: [require('@snowpack/web-test-runner-plugin')()],
9 | };
10 |
--------------------------------------------------------------------------------
/snowpack-svelte/web-test-runner.config.js:
--------------------------------------------------------------------------------
1 | // NODE_ENV=test - Needed by "@snowpack/web-test-runner-plugin"
2 | process.env.NODE_ENV = 'test';
3 |
4 | module.exports = {
5 | coverageConfig: {
6 | exclude: ['**/*/_snowpack/**/*'],
7 | },
8 | plugins: [require('@snowpack/web-test-runner-plugin')()],
9 | };
10 |
--------------------------------------------------------------------------------
/preact-tsx/test/test-helpers.tsx:
--------------------------------------------------------------------------------
1 | import { render, JSX } from 'preact';
2 |
3 | export function fixture(jsx: JSX.Element) {
4 | const wrapper = document.createElement('div');
5 | render(jsx, wrapper);
6 | return {
7 | element: wrapper.firstElementChild!,
8 | restoreFixture: () => wrapper.remove(),
9 | };
10 | }
11 |
--------------------------------------------------------------------------------
/guides/dev-server/getting-started/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@web/guides-dev-server-getting-started",
3 | "version": "0.1.0",
4 | "private": true,
5 | "license": "MIT",
6 | "scripts": {
7 | "start": "web-dev-server --open /demo/"
8 | },
9 | "devDependencies": {
10 | "@web/dev-server": "0.4.6"
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/guides/dev-server/writing-plugins/web-dev-server.env.mjs:
--------------------------------------------------------------------------------
1 | export default {
2 | plugins: [
3 | {
4 | name: "environment",
5 | serve(context) {
6 | if (context.path === "/environment.js") {
7 | return 'export const environment = "development";';
8 | }
9 | },
10 | },
11 | ],
12 | };
13 |
--------------------------------------------------------------------------------
/react-htm/test/test-helpers.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom';
3 |
4 | export function fixture(jsx) {
5 | const wrapper = document.createElement("div");
6 | ReactDOM.render(jsx, wrapper);
7 | return {
8 | element: wrapper.firstElementChild,
9 | restoreFixture: () => wrapper.remove(),
10 | };
11 | }
12 |
--------------------------------------------------------------------------------
/react-jsx/test/test-helpers.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom';
3 |
4 | export function fixture(jsx) {
5 | const wrapper = document.createElement('div');
6 | ReactDOM.render(jsx, wrapper);
7 | return {
8 | element: wrapper.firstElementChild,
9 | restoreFixture: () => wrapper.remove(),
10 | };
11 | }
12 |
--------------------------------------------------------------------------------
/react-tsx/test/test-helpers.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom';
3 |
4 | export function fixture(jsx: JSX.Element) {
5 | const wrapper = document.createElement('div');
6 | ReactDOM.render(jsx, wrapper);
7 | return {
8 | element: wrapper.firstElementChild!,
9 | restoreFixture: () => wrapper.remove(),
10 | };
11 | }
12 |
--------------------------------------------------------------------------------
/guides/dev-server/using-plugins/web-dev-server.commonjs.mjs:
--------------------------------------------------------------------------------
1 | import { fromRollup } from "@web/dev-server-rollup";
2 | import rollupCommonjs from "@rollup/plugin-commonjs";
3 |
4 | const commonjs = fromRollup(rollupCommonjs);
5 |
6 | export default {
7 | plugins: [
8 | commonjs({
9 | include: ["node_modules/axios/**/*"],
10 | }),
11 | ],
12 | };
13 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | ## editors
2 | /.idea
3 | /.vscode
4 |
5 | ## system files
6 | .DS_Store
7 |
8 | ## npm
9 | node_modules
10 | npm-debug.log
11 | yarn-error.log
12 | /*/yarn.lock
13 |
14 | ## temp folders
15 | /.tmp/
16 |
17 | ## testing
18 | coverage
19 | local.log
20 |
21 | ## build output
22 | dist
23 | tsconfig.tsbuildinfo
24 | /*/dist
25 | /*/tsc-out
26 |
27 | /*/screenshots
--------------------------------------------------------------------------------
/preact-htm/demo/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/guides/test-runner/playwright/test/sum.test.js:
--------------------------------------------------------------------------------
1 | import { expect } from "@esm-bundle/chai";
2 | import { sum } from '../src/sum.js';
3 |
4 | it('sums up 2 numbers', () => {
5 | expect(sum(1, 1)).to.equal(2);
6 | expect(sum(3, 12)).to.equal(15);
7 | });
8 |
9 | it('sums up 3 numbers', () => {
10 | expect(sum(1, 1, 1)).to.equal(3);
11 | expect(sum(3, 12, 5)).to.equal(20);
12 | });
13 |
--------------------------------------------------------------------------------
/guides/test-runner/test-runner-coverage/src/calc.js:
--------------------------------------------------------------------------------
1 | export function calc(type, a, b) {
2 | if (type === "plus") {
3 | return a + b;
4 | }
5 | if (type === "minus") {
6 | return a - b;
7 | }
8 | if (type === "multiply") {
9 | return; // a * b;
10 | }
11 | throw new Error(
12 | `Invalid type "${type}" only plus, minus or multiply is allowed.`
13 | );
14 | }
15 |
--------------------------------------------------------------------------------
/guides/test-runner/typescript/test/sum.test.ts:
--------------------------------------------------------------------------------
1 | import { expect } from "@esm-bundle/chai";
2 | import { sum } from '../src/sum.js';
3 |
4 | it('sums up 2 numbers', () => {
5 | expect(sum(1, 1)).to.equal(2);
6 | expect(sum(3, 12)).to.equal(15);
7 | });
8 |
9 | it('sums up 3 numbers', () => {
10 | expect(sum(1, 1, 1)).to.equal(3);
11 | expect(sum(3, 12, 5)).to.equal(20);
12 | });
13 |
--------------------------------------------------------------------------------
/guides/test-runner/watch-and-debug/test/sum.test.js:
--------------------------------------------------------------------------------
1 | import { expect } from "@esm-bundle/chai";
2 | import { sum } from '../src/sum.js';
3 |
4 | it('sums up 2 numbers', () => {
5 | expect(sum(1, 1)).to.equal(2);
6 | expect(sum(3, 12)).to.equal(15);
7 | });
8 |
9 | it('sums up 3 numbers', () => {
10 | expect(sum(1, 1, 1)).to.equal(3);
11 | expect(sum(3, 12, 5)).to.equal(20);
12 | });
13 |
--------------------------------------------------------------------------------
/guides/dev-server/proxy-to-other-servers/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@web/guides-dev-server-proxy-to-other-servers",
3 | "version": "0.1.0",
4 | "private": true,
5 | "license": "MIT",
6 | "scripts": {
7 | "start": "web-dev-server --open /demo/ --node-resolve"
8 | },
9 | "devDependencies": {
10 | "@web/dev-server": "0.4.6",
11 | "koa-proxies": "0.12.4"
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/guides/test-runner/getting-started/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@web/guides-test-runner-getting-started",
3 | "version": "0.1.0",
4 | "private": true,
5 | "license": "MIT",
6 | "scripts": {
7 | "test": "web-test-runner \"test/**/*.test.js\" --node-resolve"
8 | },
9 | "devDependencies": {
10 | "@esm-bundle/chai": "4.3.4",
11 | "@web/test-runner": "0.16.0"
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/snowpack-svelte/src/App.test.js:
--------------------------------------------------------------------------------
1 | import {render} from '@testing-library/svelte';
2 | import {expect} from 'chai';
3 | import App from './App.svelte';
4 |
5 | describe('', () => {
6 | it('renders learn svelte link', () => {
7 | const {getByText} = render(App);
8 | const linkElement = getByText(/learn svelte/i);
9 | expect(document.body.contains(linkElement));
10 | });
11 | });
12 |
--------------------------------------------------------------------------------
/guides/dev-server/using-plugins/web-dev-server.config.mjs:
--------------------------------------------------------------------------------
1 | import { fromRollup } from "@web/dev-server-rollup";
2 | import rollupReplace from "@rollup/plugin-replace";
3 |
4 | const replace = fromRollup(rollupReplace);
5 |
6 | export default {
7 | plugins: [
8 | replace({
9 | include: ["src/logDebug.js"],
10 | "process.env.NODE_ENV": '"development"',
11 | }),
12 | ],
13 | };
14 |
--------------------------------------------------------------------------------
/guides/test-runner/test-runner-coverage/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@web/guides-test-runner-coverage",
3 | "version": "0.1.0",
4 | "private": true,
5 | "license": "MIT",
6 | "scripts": {
7 | "test": "web-test-runner \"test/**/*.test.js\" --node-resolve --coverage"
8 | },
9 | "devDependencies": {
10 | "@esm-bundle/chai": "4.3.4",
11 | "@web/test-runner": "0.16.0"
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/guides/dev-server/loading-modules/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@web/guides-dev-server-loading-modules",
3 | "version": "0.1.0",
4 | "private": true,
5 | "license": "MIT",
6 | "scripts": {
7 | "start": "web-dev-server --open /demo/ --node-resolve"
8 | },
9 | "devDependencies": {
10 | "@web/dev-server": "0.4.6"
11 | },
12 | "dependencies": {
13 | "lit-html": "1.4.1"
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/guides/dev-server/loading-modules/demo/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/guides/dev-server/writing-plugins/web-dev-server.inject.mjs:
--------------------------------------------------------------------------------
1 | export default {
2 | plugins: [
3 | {
4 | name: "inject-html-plugin",
5 | transform(context) {
6 | if (context.path === "/demo/") {
7 | return context.body.replace(
8 | "