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

lmsiq

v0.1.4

Published

LmsIQ — Moodle-aware UI regression testing CLI (Playwright)

Readme

LmsIQ

Moodle regression testing, done with intent.

LmsIQ is a semantic automation platform for standard Moodle workflows. It lets teams validate that core Moodle behaviour — course management, user enrolment, activity completion, SCORM, quizzes, assignments — still works correctly after upgrades, theme changes, or configuration updates.

Workflows are written in plain YAML using Moodle-native verbs (openCourse, completeScorm, verifyActivityCompleted), not raw browser selectors. The Playwright layer is an implementation detail; your regression suite reads like a Moodle task list.


Quick start (global install)

# Step 1 — Install LmsIQ from npm
npm install -g lmsiq

# Step 2 — Install Playwright browser (run once per machine)
# LmsIQ bundles @playwright/test; you only need the Chromium binary.
npx playwright install chromium

# Step 3 — Create a project folder for your Moodle tests
mkdir my-moodle-tests
cd my-moodle-tests

# Step 4 — Init (creates .env + copies bundled core workflows)
lmsiq init

# Step 5 — Edit .env with your Moodle URL and test account credentials

# Step 6 — Verify setup (8 checks: env, URL, version, browser, logins, course, activities)
lmsiq doctor

# Step 7 — Run your first workflow
lmsiq run --workflow tests/workflows/core/auth/student-login.yaml

Install order: install lmsiq first, then run npx playwright install chromium. If you see a Playwright warning about missing dependencies during lmsiq run, Chromium may still install successfully — run npx playwright install chromium once to clear it.

Quick start (development — from this repo)

npm install
cp templates/.env.example .env
# edit .env, then:
npm run lmsiq -- doctor
npm run lmsiq -- run --workflow tests/workflows/core/auth/student-login.yaml

For a global lmsiq command while developing:

npm link
lmsiq init

Example workflow

id: student-scorm
name: Student completes SCORM activity

steps:
  - action: loginAs
    role: student

  - action: openCourse
    course: "${MOODLE_SCORM_COURSE_NAME}"

  - action: completeScorm
    activity: "${MOODLE_SCORM_ACTIVITY_NAME}"

  - action: verifyActivityCompleted
    activity: "${MOODLE_SCORM_ACTIVITY_NAME}"

  - action: logout

Core action catalog (Phase 1)

| Domain | Actions | |--------|---------| | Auth | loginAs, logout, verifyLoggedIn | | Courses | openCourse, createCourse, verifyCourseVisible | | Users | createUser, enrolUser, verifyUserEnrolled | | Activities | openActivity, createPage, createAssignment, createQuiz, createScorm | | Completion | completePage, completeScorm, submitAssignment, attemptQuiz, verifyActivityCompleted | | Admin | createCategory |


Recording assistant

Speed up workflow discovery on any Moodle site:

npm run lmsiq -- record --name my-workflow

LmsIQ opens a headed browser, watches your navigation, and writes a draft YAML when you press Enter. The draft uses Core semantic steps — always review before committing.


Custom workflows

Custom or organisation-specific workflows (proprietary plugins, custom dashboards, tenant navigation) belong in tests/workflows/company/ and are built on top of Core actions. See Company validation suite for examples.


Documentation

| Doc | Purpose | |-----|---------| | Product architecture | Core vs Custom layer boundary, Phase 1 scope, strategic rationale | | Moodle semantic actions | Action design principles, code layout, activity priority tiers | | Writing workflows | YAML contract, .env variables, supported actions, runner output | | Company validation suite | Customised Moodle smoke suite example |


Requirements

  • Node.js 18+
  • Playwright Chromium (npx playwright install chromium — once per machine)
  • A running Moodle 5.x instance (doctor validates version and connectivity)