Files

7.0 KiB
Raw Permalink Blame History

Business Case

Metadata

Key Value
ID BC-001
CrossReference SA-001
Language en
Domain it

Version History

Date Status Author Reviewer Change Commit
2026-10-28 Accepted Jens Tirsvad Nielsen AI as stand-in for S01 Initial version e1a3d8d

Executive Summary

Day 48 of the Udemy course "100 Days of Code: The Complete Python Pro Bootcamp" teaches Selenium WebDriver: clicking links, typing into inputs, sending special keys and filling out a sign-up form. This project turns that assignment into a small, readable, runnable Python repository with tests, documentation, a screenshot for every lecture step and a three-language wiki. It is a learning and portfolio project with one person doing the work.

Methodological and Standards Foundation

  • The SQA and QC framework mounted at framework/ governs documents, reviews and the plan-first gate.
  • Quality characteristics follow ISO/IEC 25010:2023.
  • Code follows the coding-conventions skill (Python) and the layering of the clean-architecture skill.
  • Docs-as-code: every change reaches main by a pull request, one pull request per milestone.

Problem Statement

  • The course assignment is normally solved as one throw-away script. The author's earlier solution (the day-48 folder of a monolithic course repository) is a scratch file that does not follow the lecture, has no tests and no documentation.
  • Other course participants cannot easily compare solutions or see what each lecture step produces.
  • A repository without a description, topics and a README is neither found nor understood by GitHub viewers.

Business Opportunity

A clean reference solution for the lecture lets the author keep a tidy portfolio, lets course participants compare solutions, and shows a repeatable project structure (src, tests, docs, wiki) for the remaining days of the course.

Objectives

  1. Deliver Python code that automates the lecture steps with Selenium: click a link by its text, search for "Python" and press Enter, and fill out a form (first name, last name, email) and click the sign-up button.
  2. Deliver pytest tests for all logic that needs no browser.
  3. Deliver a screenshot for each lecture step, shown in the README and the wiki.
  4. Deliver a wiki in English, Danish and Bahasa Malaysia that explains what was gained in each lecture step.
  5. Configure the repository: description, topics, Python .gitignore, pyproject.toml, Doxyfile, and instructions for a local .venv.

Scope

In Scope

  • Python 3.13 or newer package under src/, tests under tests/, documents under docs/.
  • Constants in constants.py; Doxygen comments in the source and a Doxyfile.
  • pyproject.toml, venv instructions (python -m pip install --upgrade pip), Python .gitignore.
  • README from the framework template, with run and test instructions and screenshots.
  • Wiki pages in English, Danish and Bahasa Malaysia (docs/wiki/), with the same screenshots.
  • Repository description and topics on the git host.

Out of Scope

  • Running the browser automation on the host desktop (it runs in Docker, see framework/process/gui-testing.md).
  • Later days of the course and the final project.
  • Packaging for PyPI, a graphical front end, and a web service.
  • Reading, testing or importing the personal tokens in .env.

Expected Benefits

Tangible Benefits

  • A runnable reference solution with passing tests.
  • One screenshot per lecture step (at least three).
  • Three language versions of the wiki.

Intangible Benefits

  • A reusable project layout for the other course days.
  • Practice with Selenium, pytest and docs-as-code.
  • A repository others can read and learn from.

Strategic Alignment

The project supports the author's goal of completing the course with a documented, reviewable portfolio, and the framework's goal of showing the plan-first workflow on a small project.

Success Criteria

# Criterion Target Measure
1 Tests pass 100 % of pytest tests pass on Python 3.13 pytest exit code 0
2 Lecture steps covered 3 of 3 steps (link click, search, form) implemented and shown by a screenshot Files in docs/images/
3 Wiki languages 3 of 3 languages with the same page set Files in docs/wiki/
4 Runtime dependencies Exactly 1 (selenium) dependencies in pyproject.toml
5 Repository metadata Description set and at least 5 topics Git host API response
6 Quality gate Every document and the code have an RC-* with verdict Go docs/sqa/reviews/

Risks

Risk Impact Mitigation
The assignment's form page (a Heroku demo) is offline The form step cannot be shown against the original site A local HTML fixture with the same field names serves tests and screenshots; the original URL is a constant
Docker or the browser image is unavailable No screenshots Stop and report (gui-testing rule 5); never fall back to the host desktop
Wikipedia changes its page layout Selectors break Selectors live in constants.py; screenshots record the state on the capture date
Danish or Bahasa Malaysia text contains errors Misleading text English is authoritative; translations follow page by page; the author can correct them
Tokens in .env leak Account compromise .env is in .gitignore and is never read by project code or tests

Assumptions

  • S01 is Product Owner, developer and reviewer; in autonomous mode the AI stands in for the reviewer, recorded as not independent.
  • Docker is installed on the author's machine.
  • The git host accepts the token in .env for repository and issue operations.
  • "Python greater than 3.13" is read as 3.13 or newer (requires-python = ">=3.13").

Constraints

  • Duration: one week, 2026-10-28 to 2026-11-04.
  • Python 3.13 or newer, venv, pytest, pyproject.toml.
  • Folder structure src/, tests/, docs/.
  • Only runtime dependency: selenium.
  • Product Owner domain: IT; language: English.

Cost–Benefit Assessment

Qualitative, because the project is unpaid learning work with no revenue.

Costs Benefits
About one week of the author's time and AI usage A reference solution, documentation in three languages and a reusable project layout
A Docker image download Safe, reproducible browser runs

Stakeholders

Stakeholder ID (SA) Interest in this project
S01 Wants a tidy portfolio piece (CN-001, CN-002, CN-007)
S02 Wants readable, runnable code with the assignment's function names and run instructions (CN-003, CN-004)
S03 Wants a clear repository description, topics and README, and no unnecessary runtime dependencies (CN-005, CN-006)

Recommendation

Proceed — the scope is small, the risks are mitigated and the outcome is a reusable reference.