npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

n8n-workflow-test

v0.1.0

Published

Validate an n8n workflow without running it. Catches broken connections, duplicate node names, orphan nodes and more. Framework-agnostic, zero runtime dependencies.

Readme

n8n-workflow-test

Validate an n8n workflow without running it. Catches the mistakes that normally only show up in production: broken connections, duplicate node names, orphan nodes that never run, and missing triggers.

Framework-agnostic. Zero runtime dependencies. Does not require n8n to be installed.

The problem

When you change an n8n workflow, the only real way to check you did not break it is to run the whole thing live. That means real Slack messages get sent, real rows get written, real emails go out, on real client data. If something is broken, the client often notices before you do.

n8n-workflow-test reads the workflow's JSON and checks it for structural problems at your desk, before it ever runs.

Install

npm install --save-dev n8n-workflow-test

Use

import { validateWorkflow } from "n8n-workflow-test";

const result = validateWorkflow(myWorkflowJson);

if (!result.valid) {
  console.log(result.errors);   // things that are broken
}
console.log(result.warnings);   // things that look suspicious

In a test (so a bad workflow fails CI)

import { assertValidWorkflow } from "n8n-workflow-test";
import workflow from "./workflows/onboarding.json" with { type: "json" };

test("onboarding workflow is structurally valid", () => {
  assertValidWorkflow(workflow); // throws, with a readable message, if broken
});

What it checks

Errors (these make a workflow invalid):

  • The input is actually a workflow object with nodes and connections.
  • The workflow is not empty.
  • Every node has a name and a type.
  • No two nodes share the same name (n8n keys connections by name).
  • Every connection starts from and points to a node that actually exists.

Warnings (suspicious, but might be intentional):

  • A node that is connected to nothing and will never run.
  • A workflow with no trigger node, which cannot start on its own.

What this does NOT do (yet)

Kept deliberately small for v1. Planned for later:

  • Mock running: executing the workflow's logic with fake stand-ins for the outside world, so you can confirm behaviour with zero real side effects.
  • A CLI for running validation directly in CI without writing a test file.
  • Deep parameter checks per node type.

License

MIT. See LICENSE.