7.1 KiB
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 | Claude (AI) | AI as stand-in for S01 | Initial version; accepted after a Go review | b344b6e |
Executive Summary
The Udemy course "100 Days of Code: The Complete Python Pro Bootcamp" has a lecture on web scraping with Selenium: create interaction.py, start a Chrome driver, open the Wikipedia main page and print the article count found with a CSS (Cascading Style Sheets) selector. This project delivers that lecture as a small, tested and documented Python 3.13+ program. Every lecture step has a screenshot in the README and in a wiki written in English, Danish and Bahasa Malaysia that explains what was learned.
Methodological and Standards Foundation
The SQA and QC framework in framework/ (plan first, then code, every step reviewed), ISO/IEC 25010:2023 for quality characteristics, and the Python conventions of the coding-conventions skill.
Problem Statement
A lecture exercise is usually one untested script that only runs on the author's machine. Course participants who compare solutions (S02) and visitors who browse for ideas (S03) get no setup instructions, no tests and no explanation of what each step teaches. A browser-driven script also cannot be tested on the author's desktop without taking over the mouse and keyboard.
Business Opportunity
A finished reference solution for the lecture that others can run and compare against, and a template for the later Selenium lectures (clicking links, typing into fields).
Objectives
- Provide
interaction.pythat starts a Chrome driver, openshttps://en.wikipedia.org/wiki/Main_Pagewithget(), finds the anchor inside thearticlecountdiv withfind_elementand a CSS selector, and prints its text. - Keep constants (URL, selector) in
constants.pyand document the source with Doxygen comments and aDoxyfile. - Cover the logic with pytest tests that need no browser, and run the browser end to end only in an isolated Docker container.
- Provide a screenshot for each lecture step, shown in the README and in the wiki.
- Provide a wiki in English, Danish and Bahasa Malaysia that explains what each lecture step taught.
- Provide a README from the framework template with instructions to create and use a local
.venv, upgrade pip, run the project and run its tests. - Set the description and topics on the git host repository.
Scope
In Scope
Python package under src/, tests under tests/, documentation under docs/ (screenshots, wiki, Doxygen), pyproject.toml, Doxyfile, Python .gitignore, Dockerfile for the screenshot and end-to-end run, README, wiki in three languages, repository description and topics.
Out of Scope
Clicking links and typing into search fields (later lectures), other websites, a graphical or web interface of our own, packaging for PyPI, testing the GUI on the host desktop, reading or testing the .env file.
Expected Benefits
Tangible Benefits
A working, tested lecture solution; reproducible setup from a clean .venv; screenshots and a trilingual wiki that others can follow.
Intangible Benefits
Practice with the plan-first process on a browser-automation task and with isolated GUI testing.
Strategic Alignment
Supports completing the Python Pro Bootcamp with reviewed, portfolio-quality projects, and makes the repository useful to other course participants.
Success Criteria
| # | Criterion | Target | Measure |
|---|---|---|---|
| 1 | Unit tests pass without a browser | All tests pass | python -m pytest in the .venv |
| 2 | End to end run prints the article count | A number is printed, exit code 0 | Docker container run, log file |
| 3 | Screenshot per lecture step | 7 lecture steps, 7 screenshots | Files in docs/screenshots/ |
| 4 | Wiki languages | 3 languages, same page set | framework/scripts/check-languages.sh |
| 5 | Setup is reproducible | README steps work on a clean .venv |
Manual run of the README |
| 6 | Runtime dependencies | Exactly one: selenium |
pyproject.toml |
| 7 | Repository metadata | Description and at least 5 topics set | Git host API (application programming interface) response |
Risks
| Risk | Impact | Mitigation |
|---|---|---|
Wikipedia changes the page and the selector #articlecount a stops matching |
End to end run and screenshots fail | Selector lives in constants.py; the end to end run is the check; the README names the date it was verified |
| Chrome driver cannot be fetched in the container | No screenshots | Dockerfile installs Chromium and its driver from the distribution packages |
Token in .env leaks |
Account compromise | .env stays git-ignored, is used only by personal tooling and is never read, tested or imported by the project |
| Running Selenium on the host desktop takes the user's mouse and keyboard | Interrupted work | GUI runs only in Docker, as framework/process/gui-testing.md requires |
| Translations drift from the English text | Inconsistent wiki | English is authoritative; same page set in all languages; check-languages.sh |
Assumptions
- Python 3.13 or newer, Docker and (optionally) Doxygen are installed on the Product Owner's machine.
- The Product Owner (S01) is the reviewer; in autonomous mode the AI acts as S01's stand-in and records it in the review.
- The git host is reachable and the
.envtoken may create repository metadata and issues. - Wikipedia is reachable from the Docker container.
Constraints
- Python 3.13 or newer,
venv,pytest, folderssrc/,tests/,docs/, constants inconstants.py, Doxygen comments and aDoxyfile. - Runtime dependencies only where needed:
seleniumis the one the lecture requires. - Product Owner language English, domain IT; wiki in English, Danish and Bahasa Malaysia.
- No GUI or browser test on the host desktop.
Cost–Benefit Assessment
Qualitative, by decision: this is an unpaid course assignment with no revenue or budget, so no ROI can be calculated; the cost is the time of S01 and the AI.
| Costs | Benefits |
|---|---|
| A few hours of the Product Owner's time and the AI's work; Docker image build time | A finished, documented lecture solution that others can run and learn from |
Stakeholders
| Stakeholder ID (SA) | Interest in this project |
|---|---|
| S01 | Product Owner, developer and reviewer; accepts each milestone |
| S02 | Course participants; need readable, runnable code with the assignment's names and run instructions |
| S03 | Repository viewers; need a clear description, topics and README and no extra runtime dependencies |
Recommendation
Proceed — the scope is small, the cost is low and it completes the lecture with a reusable, documented result.