Ghost/apps/signup-form
Hannah Wolfe 6161f94910
Updated to use assert/strict everywhere (#17047)
refs: https://github.com/TryGhost/Toolbox/issues/595

We're rolling out new rules around the node assert library, the first of which is enforcing the use of assert/strict. This means we don't need to use the strict version of methods, as the standard version will work that way by default.

This caught some gotchas in our existing usage of assert where the lack of strict mode had unexpected results:
- Url matching needs to be done on `url.href` see aa58b354a4
- Null and undefined are not the same thing,  there were a few cases of this being confused
- Particularly questionable changes in [PostExporter tests](c1a468744b) tracked [here](https://github.com/TryGhost/Team/issues/3505).
- A typo see eaac9c293a

Moving forward, using assert strict should help us to catch unexpected behaviour, particularly around nulls and undefineds during implementation.
2023-06-21 09:56:59 +01:00
..
.storybook Moved signup-form to apps/ folder 2023-06-19 09:43:33 +02:00
assets/icons 🐛 Fixed accessibility issue with hidden success message in signup form 2023-06-21 10:38:27 +02:00
src 🐛 Fixed accessibility issue with hidden success message in signup form 2023-06-21 10:38:27 +02:00
test Updated to use assert/strict everywhere (#17047) 2023-06-21 09:56:59 +01:00
.env.development Moved signup-form to apps/ folder 2023-06-19 09:43:33 +02:00
.eslintrc.cjs Moved signup-form to apps/ folder 2023-06-19 09:43:33 +02:00
.yarnrc Moved signup-form to apps/ folder 2023-06-19 09:43:33 +02:00
index.html Moved signup-form to apps/ folder 2023-06-19 09:43:33 +02:00
package.json Released Signup Form v0.1.3 2023-06-21 10:48:22 +02:00
playwright.config.ts Moved signup-form to apps/ folder 2023-06-19 09:43:33 +02:00
postcss.config.cjs Moved signup-form to apps/ folder 2023-06-19 09:43:33 +02:00
preview.html Moved signup-form to apps/ folder 2023-06-19 09:43:33 +02:00
README.md Moved signup-form to apps/ folder 2023-06-19 09:43:33 +02:00
tailwind.config.cjs Moved signup-form to apps/ folder 2023-06-19 09:43:33 +02:00
tsconfig.json Moved signup-form to apps/ folder 2023-06-19 09:43:33 +02:00
tsconfig.node.json Moved signup-form to apps/ folder 2023-06-19 09:43:33 +02:00
vite.config.ts Fixed include path for signup-form translations 2023-06-21 09:12:28 +02:00

Embeddable Signup Form

Embed a Ghost signup form on any site.

Development

Pre-requisites

  • Run yarn in Ghost monorepo root
  • Run yarn in this directory

Running via Ghost yarn dev in root folder

You can automatically start the signup-form dev server when developing Ghost by running Ghost (in root folder) via yarn dev --all. This will only build the production build, without the demo site.

Running via yarn dev --all --signup or yarn dev --signup will also serve the demo site on http://localhost:6173.

Running the development version only

Run yarn dev (in package folder) to start the development server to test/develop the form standalone.

Using the UMD build during development

Vite by default only supports HRM with an ESM output. But when loading a script on a site as a ESM module (<script type="module" src="...">), you don't have access to document.currentScript inside the script, which is required to determine the location to inject the iframe. In development mode we use a workaround for this to make the ESM HMR work. But this workaroudn is not suitable for production.

To test the real production behaviour without this hack, you can use http://localhost:6173/preview.html. This HTML page will use http://localhost:6174/signup-form.min.js directly.

Develop

This is a monorepo package.

Follow the instructions for the top-level repo.

  1. git clone this repo & cd into it as usual
  2. Run yarn to install top-level dependencies.

Test

  • yarn lint run just eslint
  • yarn test run lint and tests
  • yarn test:e2e run e2e tests on Chromium
  • yarn test:slowmo run e2e tests visually (headed) and slower on Chromium
  • yarn test:e2e:full run e2e tests on all browsers