Jakob Norlin

Jakob Norlin

@norlin.dev

Building https://endform.dev

112 followers126 following138 posts

Pinned

We are launching Endform into early preview. With Endform you can run your Playwright E2E tests faster than anywhere else โšก We're looking for early customers to test with. If you've got a Playwright test suite that needs speeding up, send me a DM, I'd love to talk!

How many times did you press "Re-run failed jobs" this week? I haven't been coding much the last few days, and I still think I'm at 5 ๐Ÿ˜…

View full thread

With the Endform MCP server, the agent can access history and trace data from your previous test runs. So it can tell what type of issue it is, whether it's worth rerunning, or quarantine the test directly if it's been causing a lot of trouble lately.

How many times did you press "Re-run failed jobs" this week? I haven't been coding much the last few days, and I still think I'm at 5 ๐Ÿ˜…

View full thread

Here's one from this week. 1 failing test. It has failed 3 times in 1,038 runs over the last 4 weeks, with the same error each time, and the commit only touched an unrelated email file. Verdict: recurring flake, rerun.

The data needed to make these calls is usually buried deep in CI logs that are hard to access and don't paint the whole picture.

How many times did you press "Re-run failed jobs" this week? I haven't been coding much the last few days, and I still think I'm at 5 ๐Ÿ˜…

Usually there's way too much to dig through to figure out whether a failure is real, or just a flaky test, check or service. So my default reaction is to rerun without checking what's wrong.

Lately we've set up an agent to review every test failure in CI. It decides one of three things: โ†’ it's a real failure โ†’ it should be rerun โ†’ it's been flaky enough to quarantine

Playwright v1.63 was just released, and it has a new feature called "Test locks". This means only a single test with the same lock name can run at any one time. Great for tests that mutate shared resources that can not reasonably be generated uniquely for each test, but it has some limitations.

View full thread

Endform allows you to limit concurrent tests, which solves both these use cases. Configure a tag that you want to limit concurrency on, what the limit should be, and whether it should only apply within a specific run of your test suite, or globally across all runs happening at the same time.

Playwright v1.63 was just released, and it has a new feature called "Test locks". This means only a single test with the same lock name can run at any one time. Great for tests that mutate shared resources that can not reasonably be generated uniquely for each test, but it has some limitations.

What happens if you have several CI jobs running at the same time accessing that same shared resource? Playwright has no way to know there are other test suites running, so will allow them, which risks tests mutating data relied upon by other currently running tests.

What if the reason for the lock is limited performance, and we actually want to allow 5 out of a 100 tests to run at the same time for a specific lock? Playwright does not allow you that level of control.

Playwright is a great tool for keeping track of perf so you don't regress on perf metrics. You can integrate it with lighthouse and make sure the INP score is good for the interactions you want to stay fast. E2E tests are super versatile and can be used to test so many aspects of your application.

We just shipped endform query, a new CLI command for pulling Endform analytics data. A neat thing about this is that you can now ask your coding agent to help debug tests.

Example: โ€œUse endform query to find failed checkout tests from the last 14 days, group them by error message, look for patterns across projects and branches, and suggest what in the test or app code is likely causing it.โ€

You donโ€™t need to move your whole test suite into CI at once. Start by tagging up a few tests with "@ci" and then run "npm run playwright test --grep=@ci" in your CI pipeline. Tag up more tests as you go to increase confidence in what you ship.

2.5 megawatts of server rack space in MagasinX in Stockholm. Completely empty right now. What will they put in here? ๐Ÿค”

View full thread

Jakob Norlin reposted

Zynth is a fine-grained reactive runtime for iOS and Android built on @solidjs.com principles. It enables an authentic native feel and smooth animations without blocking the JS thread, all from one codebase. Zend is now on the App Store. Open alpha: github.com/zynth-org/zy...

github.comGitHub - zynth-org/zynth: Create cross-platform app using SolidJSCreate cross-platform app using SolidJS. Contribute to zynth-org/zynth development by creating an account on GitHub.

Jakob Norlin reposted

technically it's been ready for mainstream adoption for a while now, since those were out and mostly stable: - tanstack (query / router / start / form) - ark-ui (ui lib) - shadcn distribution (copy/paste/dl from registries and adapt) so whats missing?

dax@thdxr.com

saw a question asking if solid-js is still relevant frontend talk has been mostly replaced by ai talk but it's quietly grown 6x in a year in opencode - tui in solid - tauri in solid - web app in solid-start - enterprise app in solid

Jakob Norlin reposted

1/ End-to-end tests are supposed to give you confidence. Instead, many Playwright setups createโ€ฆ chaos. Hereโ€™s why (and what to do instead) ๐Ÿงต

Jakob Norlin reposted

We've been using Endform for a few months at work. It's solid. I recommend it.

Jakob Norlin@norlin.dev

We just opened up Endform to public access ๐ŸŽ‰ Come join the fun and run your Playwright tests faster! You get 2000 test minutes for free in the trial, and it's $0.01 per consumed test minute after that. endform.dev

Jakob Norlin reposted

We're launching a GoFundMe to cover legal fees to #FreeJavaScript trademark from Oracle. We need to raise $200k to make full use of the discovery phase in the trademark cancelation petition. This is a critical step in protecting the JavaScript name for the whole community. ๐Ÿ‘‰ javascript.tm

javascript.tmJavaScriptโ„ขWe need your help to continue our fight over Oracle's claim to the JavaScript trademark. Here's where we are now and what you can do to help.

Jakob Norlin reposted

Tonight will be one of the best nightlies of the TypeScript Native Preview ever. 1) @andrewbran.ch fully rewrote the language server infra into a snapshot model. No more data races. It's so cool 2) Sheetal added build mode (-b), and it's even _concurrent_ build mode. 10x+ on dt-tools, hot and cold

Symbol.dispose is the best thing that's come to Node.js lately. Love using it for test cleanup!

Artem Zakharchenko@kettanaito.com

Write flat tests. No "describe", no scenario nesting, no beforeEach/afterEach hooks (as a rule). Each test case is self-contained, listing all the setup it needs. Use Symbol.dispose for reliable cleanup. Use granular test cases. โ˜๏ธ These things will make your tests shine.

Moving our marketing pages over from solid-start to Astro. Quite a shift in mentality, and I still need a few interactive solid-components in there, but it fits this use case really well.

Super excited for where we're at with Endform! ๐Ÿ–ฅ๏ธ The CLI and runtime are ready for testing with customers. ๐Ÿ“Š The Dashboard is good enough to get people going. We'll invest a lot in making this the best test reporting dashboard going forward. It's turning out so nicely! ๐Ÿ˜ƒ

We put a lot of effort into making Endform fast โšก ๐Ÿ›ค๏ธ Tests run fully in parallel on light weight machines ๐ŸŒ No remote browsers over chatty websockets ๐Ÿฆ€ Rust based CLI that traces all test dependencies with surgical precision Wanna try the beta? Reach out!