Files

77 lines
4.0 KiB
Markdown

# MIL-001 Project setup
## Metadata
| Key | Value |
| --- | --- |
| ID | MIL-001 |
| CrossReference | [BC-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] |
---
## Purpose
Decide whether the repository is configured well enough to start writing the Selenium code: project configuration, folder structure, constants, tooling, documentation skeleton and repository metadata.
## Deliverable
A repository on branch `mil-001-project-setup` with `pyproject.toml`, the `src/` and `tests/` skeleton, `constants.py`, a Python `.gitignore`, a `Doxyfile`, the README with venv instructions, ADR-0001, and the repository description and topics set on the git host.
## Go / No-Go Criteria
| # | Criterion (objectively checkable) | Go | No-Go |
| --- | --- | --- | --- |
| 1 | `python -m venv .venv`, `python -m pip install --upgrade pip` and `pip install -e ".[dev]"` succeed on Python 3.13 | All three succeed | Any fails |
| 2 | `pytest` runs and exits 0 on the skeleton | Exit 0 | Non-zero |
| 3 | `[project] dependencies` lists only selenium | Only selenium | Any other runtime dependency |
| 4 | The git host shows a description and at least 5 topics | Both present | Either missing |
| 5 | `.env` is ignored and is not read by any file under `src/` or `tests/` | `git check-ignore .env` succeeds; no match for `.env` in code | Otherwise |
| 6 | The code review record against `QC-PY-001` is `Go` | Go | No-Go |
## Dependencies
| Depends on | Reason |
| --- | --- |
| None | First gateway; the Business Case, Stakeholder Analysis and Project Plan are accepted before it starts |
## Traceability
| Business Case objective / KPI / user story | Reference |
| --- | --- |
| Objective 5 (repository configuration) | [BC-001] |
| Success criteria 4 and 5 | [BC-001] |
## Ownership
| Role | Stakeholder ID (SA) |
| --- | --- |
| Owner | S01 |
| Approving reviewer | S01 |
## Target Date
2026-10-29 — inside the one-week window of the Business Case.
## Tasks
| # | Task | Summary | Needs its own Use Case/User Story? | Reference |
| --- | --- | --- | --- | --- |
| 1 | Set repository description and topics | Set a short description and topics (python, selenium, udemy, 100-days-of-code, web-automation, pytest) on the git host through its API. The token is read from the shell environment loaded from `.env` by the operator and is never printed, committed, tested or imported by the project (CN-005). | No | |
| 2 | Add Python .gitignore | Add a Python `.gitignore` that also ignores `.venv/`, `.env`, build output, caches and generated Doxygen output so that no secret or artifact is committed (CN-005). | No | |
| 3 | Create pyproject.toml and package layout | Configure the project in `pyproject.toml` with `requires-python = ">=3.13"`, selenium as the only runtime dependency, pytest as a `dev` extra, and the `src/fill_out_form/` and `tests/` folders (CN-006). | No | |
| 4 | Create constants.py | Put every URL, selector, link text, search term, field value and timeout in `constants.py` so the logic has no magic values (CN-003). | No | |
| 5 | Add Doxyfile | Add a `Doxyfile` configured for Python sources in `src/` and write Doxygen-style comments in the skeleton (CN-003). | No | |
| 6 | Write README with venv and test instructions | Create `README.md` from the framework template with how to create a local `.venv`, run `python -m pip install --upgrade pip`, install, run and test (CN-004). | No | |
| 7 | Record dependency and fixture decisions as ADR-0001 | Record that selenium is the only runtime dependency, that the form step has a local HTML fixture because the original demo site may be offline, and that browser runs happen in Docker (CN-006). | No | |
---
[BC-001]: ../business-case.md
[e1a3d8d]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/048-fill-out-form/commit/e1a3d8d304d4b6ece1a3f95ee02b597e30a97520