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.2.2

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.

npm version License: MIT


Install

npm install -g lmsiq
npx playwright install chromium

Or use in a project:

npm install lmsiq
npx lmsiq --help

Quick start

lmsiq init
# Edit .env with your Moodle URL and credentials

lmsiq doctor
lmsiq run --workflow tests/workflows/student-page.yaml

For local development from this repo:

npm install
npm run build
npm link
lmsiq run --workflow tests/workflows/student-page.yaml

Scan a Moodle plugin (PHP → accurate tests)

LmsIQ reads your plugin's PHP source — version.php, lang strings, Mustache templates, moodleform classes, and page URLs — and builds a real description for test generation. No guessing field names or labels.

cd /path/to/moodle
lmsiq scan --plugin local/myplugin
lmsiq scan --plugin local/myplugin --generate --provider google

On Git Bash, prefer local/myplugin (no leading slash) or pass --moodle /c/path/to/moodle.


AI test generation

lmsiq generate --init
lmsiq generate --from lmsiq-plugin.yaml
lmsiq generate --prompt "Course booking plugin for Moodle..."
lmsiq generate --interactive --provider google

Combine with scan for the most accurate output:

lmsiq scan --plugin local/myplugin --generate --provider google

Pre-built workflows (run after lmsiq init)

These ship with LmsIQ and are ready to run once .env is configured:

Activities

lmsiq run --workflow tests/workflows/student-page.yaml
lmsiq run --workflow tests/workflows/student-scorm.yaml
lmsiq run --workflow tests/workflows/student-submit-assignment.yaml
lmsiq run --workflow tests/workflows/student-attempt-quiz.yaml
lmsiq run --workflow tests/workflows/teacher-assignment.yaml

Admin

lmsiq run --workflow tests/workflows/admin-create-course.yaml
lmsiq run --workflow tests/workflows/admin-create-user.yaml

Role-based access

lmsiq run --workflow tests/workflows/core/roles/student-cannot-access-admin.yaml
lmsiq run --workflow tests/workflows/core/roles/admin-can-access-admin.yaml
lmsiq run --workflow tests/workflows/core/roles/teacher-access-scope.yaml

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:

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 (npx playwright install chromium)
  • Moodle 5.x (5.0 and above)

Source & support

LmsIQ is distributed on npm under the MIT licence. Documentation ships inside the package (docs/ after install). For questions or issues, contact [email protected].