Skip to content

test: add GitHub Classroom setup verification suite#189

Merged
accesswatch merged 1 commit intomainfrom
feat/classroom-setup-tests
May 5, 2026
Merged

test: add GitHub Classroom setup verification suite#189
accesswatch merged 1 commit intomainfrom
feat/classroom-setup-tests

Conversation

@accesswatch
Copy link
Copy Markdown
Collaborator

Adds .github/scripts/tests/classroom-setup.test.js\ - 20 new automated tests that verify every artifact required for a successful GitHub Classroom cohort deployment before a facilitator creates a classroom or runs a workshop.

What is tested:

  1. All required classroom deployment files exist
  2. All seeding scripts referenced in classroom README exist
  3. Autograding JSON files - structure, fields, points, timeouts, uniqueness
  4. Autograding coverage - Day 1 covers challenges 4/5/6/7, Day 2 covers 10/14/16
  5. Assignment descriptors - required sections and challenge number coverage
  6. Template repo readiness - all 41 files Classroom will copy are present
  7. Workflow permissions - issues:write, pull-requests:write, concurrency blocks
  8. Architecture invariants - per-student private repos, no shared repo, late joiners, no org membership required

Result: 88/88 total tests pass (was 68)

Copilot AI review requested due to automatic review settings May 5, 2026 05:22
@accesswatch accesswatch requested a review from taylorarndt as a code owner May 5, 2026 05:22
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 5, 2026

Peer Review Assigned

Hi @accesswatch! Your PR has been automatically paired with @taylorarndt for peer review.

For @taylorarndt:

This is a great opportunity to practice code review skills! Here's what to look for:

Content Quality:

  • Does the change accomplish what the issue describes?
  • Is the writing clear and helpful?
  • Are there any typos or grammar issues?

Accessibility:

  • Proper heading hierarchy (H1 → H2 → H3, no skips)?
  • Descriptive link text (not "click here")?
  • Alt text on images?
  • [TODO] markers removed?

Documentation:

  • Code blocks are properly formatted?
  • Tables have headers?
  • References/links work correctly?

Review Guidelines:

  • Be kind and constructive
  • Suggest improvements, don't just point out problems
  • Ask questions if something is unclear
  • Approve when ready or request changes with explanation

Resources:


Pairing by Learning Room Grouping Engine

@accesswatch accesswatch merged commit 9122338 into main May 5, 2026
5 checks passed
@accesswatch accesswatch deleted the feat/classroom-setup-tests branch May 5, 2026 05:23
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds a new Node.js node:test suite to proactively verify GitHub Classroom cohort-deployment readiness by checking that required classroom artifacts exist and that key configuration files are internally consistent.

Changes:

  • Adds a comprehensive “classroom setup verification” test file that validates required classroom files, seeding script references, assignment descriptors, and autograding JSON structure.
  • Adds checks for key workflow configuration expectations (permissions + concurrency) and basic “architecture invariant” assertions against classroom/README.md.
  • Adds a “template readiness” check that asserts a curated set of learning-room files/templates exist.

Comment on lines +188 to +199
const required = [
['challenge 4', 'challenge 5', 'commit'], // branch or commit evidence
['challenge 5', 'commit', 'branch'],
['challenge 6', 'closes', 'issue link', 'pr'],
['challenge 7', 'conflict marker', 'conflict'],
];

required.forEach(variants => {
const found = names.some(n => variants.some(v => n.includes(v)));
assert.ok(
found,
`autograding-day1.json should cover one of: ${variants.join(' / ')}`
// The README says: do **not** need to ... become members of `Community-Access`
assert.match(
readme,
/do\s+\*{0,2}not\*{0,2}\s+need|not.*need.*member|not.*org.*member/i,
'.github/scripts/challenge-progression.js',
'.github/scripts/validate-pr.js',
'.github/scripts/validation-report.js',
'.github/scripts/comment-responder.js',
Comment on lines +504 to +516
// Confirm the README explicitly states there is no shared student repository.
assert.match(
readme,
/no shared student repository|replaced by GitHub Classroom/i,
'classroom README should explicitly state there is no shared student repository'
);
// The active guidance must not instruct facilitators to create one shared repo
// for all students (as the old multi-player sandbox model did).
assert.doesNotMatch(
activeReadme,
/(?:use|create|provision|set up)\s+(?:a\s+)?shared\s+(?:student\s+)?repo/i,
'classroom README active guidance must not instruct facilitators to create a shared student repo'
);
Comment on lines +204 to +212
test('autograding day 2 covers challenges 10 through 16 at minimum', () => {
const tests = readJson(autogradingDay2Path);
const names = tests.map(t => (t.test_name || '').toLowerCase());
const required = [
['challenge 10', 'local commit', 'go local'],
['challenge 14', 'template', 'yaml'],
['challenge 16', 'capstone', 'agent'],
];

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants