From 9963552cec627bda10025480bcb35530aafe1f06 Mon Sep 17 00:00:00 2001 From: Mohammad Saddam Hossain Date: Sat, 11 Jul 2026 09:22:55 +0530 Subject: [PATCH] =?UTF-8?q?chore:=20add=20contributor=20onboarding=20?= =?UTF-8?q?=E2=80=94=20issue/PR=20templates,=20roadmap,=20README=20surfaci?= =?UTF-8?q?ng?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Lower the barrier for new contributors and make open work visible: - .github/ISSUE_TEMPLATE/ β€” bug report + feature request issue forms and a config that disables blank issues and links Discussions, docs, and good first issues. Forms enforce the info CONTRIBUTING.md asks for (versions, repro, philosophy fit). - .github/PULL_REQUEST_TEMPLATE.md β€” pre-filled with the CONTRIBUTING PR checklist (tests, coverage, no new deps, @SeleniumBootApi compatibility). - ROADMAP.md β€” add a post-1.0 "current focus & where help is welcome" section surfacing contribution opportunities (kept the existing phased history intact). - README.md β€” expand the Contributing section with good-first-issue / help-wanted / roadmap / discussions links, plus PRs-welcome and good-first -issues badges. Co-Authored-By: Claude Opus 4.8 (1M context) --- .github/ISSUE_TEMPLATE/bug_report.yml | 59 ++++++++++++++++++++++ .github/ISSUE_TEMPLATE/config.yml | 11 ++++ .github/ISSUE_TEMPLATE/feature_request.yml | 47 +++++++++++++++++ .github/PULL_REQUEST_TEMPLATE.md | 29 +++++++++++ README.md | 13 ++++- ROADMAP.md | 38 ++++++++++++++ 6 files changed, 196 insertions(+), 1 deletion(-) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.yml create mode 100644 .github/ISSUE_TEMPLATE/config.yml create mode 100644 .github/ISSUE_TEMPLATE/feature_request.yml create mode 100644 .github/PULL_REQUEST_TEMPLATE.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 0000000..f65bb8c --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,59 @@ +name: "πŸ› Bug report" +description: Report a defect in Selenium Boot so we can reproduce and fix it. +title: "[Bug]: " +labels: ["bug"] +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to file a bug! A minimal reproduction is the single most + helpful thing you can provide β€” it usually turns a multi-day investigation into a quick fix. + - type: textarea + id: what-happened + attributes: + label: What happened? + description: A clear description of the bug and what you expected instead. + placeholder: "When I run tests with `parallel: methods`, the driver from thread A is reused in thread B…" + validations: + required: true + - type: textarea + id: repro + attributes: + label: Steps to reproduce + description: Minimal steps (ideally a tiny test class + the relevant `selenium-boot.yml`). + placeholder: | + 1. selenium-boot.yml with `execution.parallel: methods`, `threadCount: 4` + 2. Two test classes extending BaseTest that call `getDriver()` + 3. Run `mvn test` + 4. See NPE / wrong session in the report + validations: + required: true + - type: input + id: sb-version + attributes: + label: Selenium Boot version + placeholder: "3.1.1" + validations: + required: true + - type: input + id: java-version + attributes: + label: Java version + placeholder: "17.0.10 (Temurin)" + validations: + required: true + - type: input + id: browser + attributes: + label: Browser + driver version + placeholder: "Chrome 126 / chromedriver via Selenium Manager" + validations: + required: true + - type: textarea + id: stacktrace + attributes: + label: Stack trace / logs + description: Paste the full stack trace if applicable. This will be rendered as code, no backticks needed. + render: shell + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..6b8c4ac --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,11 @@ +blank_issues_enabled: false +contact_links: + - name: πŸ’¬ Questions & feature discussions + url: https://github.com/seleniumboot/selenium-boot/discussions + about: Ask how-to questions or float an idea before opening a feature request. + - name: πŸ“– Documentation + url: https://seleniumboot.github.io/selenium-boot + about: Guides, configuration reference, and recipes. + - name: πŸ™Œ Good first issues + url: https://github.com/seleniumboot/selenium-boot/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22 + about: New here? These are scoped, self-contained tasks to get started. diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 0000000..94fa7ae --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,47 @@ +name: "✨ Feature request" +description: Suggest a feature or improvement that fits the framework's philosophy. +title: "[Feature]: " +labels: ["enhancement"] +body: + - type: markdown + attributes: + value: | + Selenium Boot is deliberately opinionated β€” **simplicity is its main feature.** Features that + add significant complexity without clear user value may be declined. For open-ended ideas, + please start a [Discussion](https://github.com/seleniumboot/selenium-boot/discussions) first. + - type: textarea + id: problem + attributes: + label: The problem + description: Describe the problem you're solving β€” not just the solution. What can't you do today? + placeholder: "There's no built-in way to assert on a downloaded PDF's contents, only that a file appeared." + validations: + required: true + - type: textarea + id: proposal + attributes: + label: Proposed solution + description: What would the API / behaviour look like? A code sketch of the ideal usage helps a lot. + placeholder: | + downloads().waitForFile("*.pdf").assertTextContains("Invoice #123"); + validations: + required: true + - type: dropdown + id: philosophy + attributes: + label: Philosophy fit + description: How does this fit "zero boilerplate, convention over configuration, single dependency"? + options: + - "Works with zero config (a sensible default)" + - "Opt-in via selenium-boot.yml, off by default" + - "Opt-in via annotation / method call" + - "Not sure β€” happy to discuss" + validations: + required: true + - type: checkboxes + id: constraints + attributes: + label: Constraints + options: + - label: This can be added without a new external dependency (or I've noted why one is needed) + - label: This does not break existing `@SeleniumBootApi` public APIs diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..8414e10 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,29 @@ + + +## What & why + + + +Closes # + +## Type of change + +- [ ] Bug fix +- [ ] New feature (opt-in, aligned with the framework philosophy) +- [ ] Documentation +- [ ] Internal refactor / test coverage + +## Checklist + + + +- [ ] All existing tests pass (`mvn clean verify`) +- [ ] New behaviour is covered by unit tests +- [ ] No new external dependencies introduced without prior discussion +- [ ] Code follows existing conventions (no new frameworks, minimal abstraction) +- [ ] No breaking changes to `@SeleniumBootApi` public APIs (or a major version bump is justified below) +- [ ] Docs updated if user-facing behaviour changed (`docs-site/`) + +## Notes for reviewers + + diff --git a/README.md b/README.md index f3f0470..10b6b81 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,8 @@ [![Maven Central](https://img.shields.io/maven-central/v/io.github.seleniumboot/selenium-boot)](https://central.sonatype.com/artifact/io.github.seleniumboot/selenium-boot) [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE) +[![PRs welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](CONTRIBUTING.md) +[![Good first issues](https://img.shields.io/github/issues/seleniumboot/selenium-boot/good%20first%20issue?label=good%20first%20issues&color=7057ff)](https://github.com/seleniumboot/selenium-boot/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) **[Documentation](https://seleniumboot.github.io/selenium-boot) Β· [Sample Project](https://github.com/seleniumboot/selenium-boot-test) Β· [Changelog](#project-status)** @@ -677,7 +679,16 @@ Licensed under the [Apache License, Version 2.0](LICENSE). ## Contributing -See [CONTRIBUTING.md](CONTRIBUTING.md). +Contributions are warmly welcome β€” Selenium Boot is opinionated, and contributions that align with its philosophy (zero boilerplate, convention over configuration, never hide Selenium) help the whole community. + +**New here?** The best place to start: + +- πŸ™Œ [**Good first issues**](https://github.com/seleniumboot/selenium-boot/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) β€” scoped, self-contained tasks +- 🀝 [**Help wanted**](https://github.com/seleniumboot/selenium-boot/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22) β€” larger pieces we'd love a hand with +- πŸ—ΊοΈ [**Roadmap**](ROADMAP.md) β€” where the project is heading and where help fits +- πŸ’¬ [**Discussions**](https://github.com/seleniumboot/selenium-boot/discussions) β€” questions and feature ideas + +Then read [CONTRIBUTING.md](CONTRIBUTING.md) for dev setup, the PR checklist, and the backward-compatibility policy. Bug reports and feature requests both have [issue templates](https://github.com/seleniumboot/selenium-boot/issues/new/choose) to guide you. --- diff --git a/ROADMAP.md b/ROADMAP.md index 648e543..083c56f 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -4,6 +4,44 @@ This document outlines the planned evolution of Selenium Boot from MVP to a stab The roadmap is intentionally opinionated and incremental. Each phase focuses on delivering production value before expanding scope. +> **Contributors, start here.** Phases 0–5 below are complete (the framework is past v1.0). The list +> immediately below is where active work and **open contribution opportunities** live today. The +> [issue tracker](https://github.com/seleniumboot/selenium-boot/issues) is the source of truth for what's +> actionable right now β€” this document is the higher-level picture. + +--- + +## Post-1.0 β€” current focus & where help is welcome + +Items tagged **`good first issue`** or **`help wanted`** are open for contribution. Read +[CONTRIBUTING.md](CONTRIBUTING.md), comment on the issue to claim it, then open a PR against `master`. + +### Documentation & discoverability (current priority) + +Most users find a framework by searching, not by browsing GitHub. + +- **Per-page SEO descriptions** across all docs pages β€” *in progress*. +- **"Why" pages** β€” Why Selenium Boot? Β· Why not plain Selenium? Β· Why not Playwright? Β· Why accessibility-first locators? Β· Why WaitEngine? `good first issue` +- **Recipes section** β€” task-titled, search-matched guides: upload a file, download a PDF, iframes, Shadow DOM, tables, infinite scroll, OAuth/SSO, alerts, drag & drop, REST + UI. `good first issue` +- **Migration guides** β€” from Selenium + TestNG, from WebDriverManager, from Selenide, from Serenity; plus a "coming from Playwright" bridge (familiar vs. different, **not** a replacement claim). `help wanted` +- **Homepage before/after** β€” a visual `wait.until(...)` β†’ `click("#login")` comparison component. `enhancement` +- **SEO hygiene** β€” verify `sitemap.xml` generation, tighten generic page ``s. `good first issue` + +### Framework & ecosystem + +- More built-in `WaitEngine` conditions requested by users. `help wanted` +- Additional first-class browser providers (Edge, Safari) via the existing SPI. `help wanted` +- **seleniumboot-mcp** β€” keep MCP codegen output framework-native and accessibility-first as the API evolves. (See the [MCP repo](https://github.com/seleniumboot/selenium-mcp).) + +### Ongoing quality + +- Grow unit-test coverage for untested code paths. `good first issue` +- Keep the consumer sample project (`selenium-boot-test`) in step with new features. + +> Don't see what you want to work on? Open a +> [Discussion](https://github.com/seleniumboot/selenium-boot/discussions) β€” ideas that fit the +> philosophy are welcome, and we'll turn agreed ones into issues. + --- ## Guiding Roadmap Principles