gentleman-e2e

Execute Docker-based end-to-end tests validating non-interactive installer behavior.

2|Updated Jul 29, 2025
One-click install
npx skills add https://github.com/kurojs/EnderDots --skill gentleman-e2e-kurojs
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: gentleman-e2e
Source: https://github.com/kurojs/EnderDots/tree/main/.config/opencode/skills/gentleman-e2e
Command: npx skills add https://github.com/kurojs/EnderDots --skill gentleman-e2e-kurojs

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

This Skill removes uncertainty from end-to-end installer validation by providing consistent, repeatable Docker-based test patterns that verify installs, generated configs, and optional backup/restore behavior.

Core Features & Use Cases

  • Docker-based platform E2E scaffolding: Defines a repeatable Dockerfile structure per target platform that runs the installer and executes the shared test harness.
  • Deterministic E2E test functions: Standardizes how new test_* functions should log results, validate expected files/directories, and fail clearly when installs break.
  • Non-interactive installation verification: Ensures tests exercise the installer using --non-interactive with combinations of shell, window manager, editor, and backup flags.
  • Cleanup between tests: Enforces isolation by removing prior artifacts before each run to prevent false positives.

Quick Start

Ask the AI assistant to help you add a new test_* function in e2e_test.sh for a new platform combination using --non-interactive, then update the Docker test matrix and Dockerfile under installer/e2e/ to run it in CI.

Frequently Asked Questions about gentleman-e2e

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I run reliable Docker-based E2E install tests for a non-interactive CLI installer?

Docker-based E2E install tests validate installer behavior by executing per-platform Dockerfiles that run a shared test harness using the --non-interactive flag. This provides consistent, repeatable verification of installation outputs, generated configurations, and backup/restore behavior across different shell, window manager, and editor combinations.

What's the best way to structure deterministic E2E test functions for installer validation?

Deterministic E2E test functions standardize e2e_test.sh by requiring test_* functions to log results, validate expected files and directories, and fail clearly when installs break. Enforcing artifact removal before each run prevents false positives and ensures test isolation.

How do I add new E2E test coverage for different platform combinations in continuous integration?

Adding E2E test coverage involves creating a new test_* function in e2e_test.sh using --non-interactive with specific shell, window manager, editor, and backup flags. You then update the Docker test matrix and Dockerfile under installer/e2e/ to execute the new platform combination in CI.

Does Docker E2E testing work with backup and restore verification for desktop environment installers?

Docker E2E testing supports backup and restore verification by exercising the installer with backup flags during non-interactive test runs. The test harness validates that generated configurations and backup/restore processes complete correctly within the isolated Docker container environment.

Why do my E2E installer tests pass locally but fail in continuous integration?

E2E installer tests often fail in CI due to leftover artifacts causing false positives. Enforcing deterministic cleanup by removing prior artifacts before each run ensures test isolation and prevents environment inconsistencies between local and CI Docker executions.

Do I need per-platform Dockerfiles to test non-interactive installer behavior?

Per-platform Dockerfiles are required to scaffold repeatable test environments that run the installer and execute the shared test harness. This per-platform scaffolding ensures the installer is validated consistently across different target platforms using the --non-interactive flag.