@caisy/posthog-js v1.33.0-caisy
PostHog Browser JS Library
Please see PostHog Docs. Specifically, browser JS library details.
Testing
Unit tests: run yarn test.
Cypress: run yarn serve to have a test server running and separately yarn cypress to launch Cypress test engine.
Running TestCafe E2E tests with BrowserStack
Testing on IE11 requires a bit more setup.
- Run
posthoglocally on port 8000 (DEBUG=1 TEST=1 ./bin/start). - Run
python manage.py setup_dev --no-dataon posthog repo, which sets up a demo account. - Optional: rebuild array.js on changes:
nodemon -w src/ --exec bash -c "yarn build-rollup". - Export browserstack credentials:
export BROWSERSTACK_USERNAME=xxx BROWSERSTACK_ACCESS_KEY=xxx. - Run tests:
npx testcafe "browserstack:ie" testcafe/e2e.spec.js.
Tiers of testing
- Unit tests - this verifies the behavior of the library in bite-sized chunks. Keep this coverage close to 100%, test corner cases and internal behavior here
- Cypress tests - integrates with a real chrome browser and is capable of testing timing, browser requests, etc. Useful for testing high-level library behavior, ordering and verifying requests. We shouldn't aim for 100% coverage here as it's impossible to test all possible combinations.
- TestCafe E2E tests - integrates with a real posthog instance sends data to it. Hardest to write and maintain - keep these very high level
Developing together with another repo
Using Yarn link
Use yarn link. Run yarn link in posthog-js, and then yarn link posthog-js in posthog. Once you're done, remember to yarn unlink posthog-js in posthog, and yarn unlink in posthog-js.
An alternative is to update dependency in package.json to e.g. "posthog-js": "link:../posthog-js", yarn and run yarn build && yarn build-module
Developing with main PostHog repo
The posthog-js snippet for a website loads static js from the main PostHog/posthog repo. Which means, when testing the snippet with a website, there's a bit of extra setup required:
- Run
PostHog/posthoglocally - Link the
posthog-jsdependency to your local version (see above) - Run
yarn serveinposthog-js. (This ensuresdist/array.jsis being generated) - In your locally running
PostHog/posthogbuild, runyarn copy-scripts. (This copies the scripts generated in step 3 to the static assets folder forPostHog/posthog)
Further, it's a good idea to modify start-http script to add development mode: webpack serve --mode development, which doesn't minify the resulting js (which you can then read in your browser).
Using Yalc (Alternative to yarn link)
Run npm install -g yalc
- In the posthog-js repo
- Run
yalc publish
- Run
- In the posthog repo
- Run
yalc add posthog-js - Run
yarn - Run
yarn copy-scripts
- Run
When making changes
- In the posthog-js repo
- Run
yalc publish
- Run
- In the posthog repo
- Run
yalc update - Run
yarn - Run
yarn copy-scripts
- Run
To remove the local package
- In the posthog repo
- run
yalc remove posthog-js - run
yarn install
- run
Releasing a new version
Just bump up version in package.json on the main branch and the new version will be published automatically,
with a matching PR in the main PostHog repo created.
It's advised to use bump patch/minor/major label on PRs - that way the above will be done automatically
when the PR is merged.
Courtesy of GitHub Actions.
Manual steps
To release a new version, make sure you're logged into npm (npm login).
We tend to follow the following steps:
- Merge your changes into master.
- Release changes as a beta version:
npm version 1.x.x-beta.0npm publish --tag betagit push --tags
- Create a PR linking to this version in the main PostHog repo.
- Once deployed and tested, write up CHANGELOG.md, and commit.
- Release a new version:
npm version 1.x.xnpm publishgit push --tags
- Create a PR linking to this version in the main PostHog repo.
Questions?
Join our Slack community.
3 years ago