Skip to content

Latest commit

 

History

History
133 lines (93 loc) · 7.77 KB

File metadata and controls

133 lines (93 loc) · 7.77 KB
type Reference
title Validation checklist
description Canonical command sequence for validating FirebaseUI-Android changes and handoff.
tags
testing
validation
gradle
checkstyle
e2e
timestamp 2026-07-31 00:00:00 UTC

Validation checklist

Validation commands for development/handoff. Other docs/skills link here; do not restate.

Agents: agent command policy — only allowlisted invocations.

When to run what

Work types and tiers: change authoring workflow. Term ids: iteration vocabulary.

Work type Scope Shortcuts
gap-analysis Read APIs, module READMEs, upgrade guides n/a
baseline-capture Touched module unit suite (+ e2e if Auth) area-focused tier
implementation Module unit tests; e2e when Auth UI/emulator path changed unit-focused tier; optional --tests narrowing for diagnosis
independent-review Area checklist on frozen tree area-focused; no temporary narrowing left in place
pre-merge-validation CI unit path + e2e when Auth in PR full tier — once per branch

Build and unit tests

Repo root. Full CI unit path (what build.sh runs — assembleDebug, checkstyle, unit tests): Android CI. Lint and e2e are separate workflows; build.sh does not run them.

./scripts/build.sh

Module-scoped while iterating — only modules with a real src/test suite count as unit evidence:

./gradlew :auth:testDebugUnitTest
./gradlew :firestore:testDebugUnitTest
./gradlew :storage:testDebugUnitTest

Module JVM src/test? Unit-focused evidence Area-focused / full
:auth Yes :auth:testDebugUnitTest; optional focused e2e — running e2e Full auth unit + e2e; ./scripts/build.sh at full
:firestore, :storage Yes :<module>:testDebugUnitTest Same + ./scripts/build.sh at full
:database No (only androidTest) :database:assembleDebug + checkstyle — not :database:testDebugUnitTest (empty-suite trap) ./scripts/build.sh
:common No :common:assembleDebug + checkstyle + :firestore:testDebugUnitTest when shared API consumed — not :common:testDebugUnitTest (trap) ./scripts/build.sh

Instrumented androidTest (database/firestore) is not in CI or the agent allowlist — human/device only.

Lint and formatting

Blocking before implementation handoff and on the frozen tree for independent-review when style-relevant sources changed. Which gate applies depends on the language:

./gradlew checkstyle   # Java sources only
./gradlew lintAll      # Android Lint — reads Kotlin and resources

checkstyle is scoped include("**/*.java") from the root build.gradle.kts, so on a Kotlin-only diff it inspects zero files and exits 0. A green checkstyle is not evidence for a change in :auth, :app or :e2eTestKotlin blind spot.

lintAll runs Android Lint for the 8 modules that configure a lint { } block, each at checkAllWarnings = true, warningsAsErrors = true and abortOnError = true — so any new finding fails the build. It runs in its own workflow (lint.yml), not in build.sh, so you must run it separately — a green build.sh says nothing about lint. :app and :e2eTest are not yet gated (CPRN-433). Config: each module's lint { } block; library/quality/checkstyle.xml for checkstyle.

auth/lint-baseline.xml suppresses 180 pre-existing findings. Never run updateLintBaseline to clear a failure your change caused — baseline trap.

There is no separate agent entrypoint for ktlint/detekt — do not invent one.

Follow Kotlin coding conventions, Android Kotlin style, and Compose API guidelines as described in CONTRIBUTING.md.

E2e

When Auth UI / e2eTest is in scope — running e2e:

./scripts/start-firebase-emulator.sh   # separate terminal locally
./gradlew e2eTest

Coverage

This repo does not currently configure Jacoco/Codecov (or equivalent) in CI. Do not invent coverage tasks. Prefer meaningful unit + e2e assertions over synthetic coverage gates until tooling is added and documented here.

OKF bundle review

Before handoff, follow OKF policy:

  1. Update relevant okf-bundle/modules/ docs with durable learnings.
  2. Check okf-bundle/testing/ for conflicts with verified behavior; fix drift.
  3. Run independent scan for canonical ownership, DRY refs, link hygiene, durability.

Validation evidence package (blocking)

Before closing implementation_gate, review_gate, commit_gate, or publishing (git push / PR update), record evidence per change authoring § validation evidence. Minimum template:

| Step        | Command                                                                 | Exit | Evidence                                      |
|-------------|-------------------------------------------------------------------------|------|-----------------------------------------------|
| unit CI     | ./scripts/build.sh                                                      | 0    ||
| module unit | ./gradlew :<module>:testDebugUnitTest                                   | 0    | N/N tests — only if module has `src/test`     |
| assemble    | ./gradlew :<module>:assembleDebug                                       | 0    | when module has no JVM unit suite             |
| checkstyle  | ./gradlew checkstyle                                                    | 0    | Java sources only — no signal on Kotlin       |
| lint        | ./gradlew lintAll                                                       | 0    | when Kotlin/resources changed in a gated module |
| e2e         | ./gradlew e2eTest                                                       | 0    | when Auth UI — /tmp/...log                    |

History rewrite invalidates prior rows — re-run and replace the table after amend/rebase.

Handoff checklist

  • ./scripts/build.sh (or equivalent assemble + checkstyle + unit exclusion path) exit 0
  • Module evidence per module validation matrix
  • ./gradlew checkstyle when Java sources changed
  • ./gradlew lintAll when Kotlin or resources changed in a gated module
  • E2e green when Auth UI / e2eTest changed (running e2e)
  • Validation evidence package recorded
  • OKF bundle reviewed/updated per § above
  • Conventional Commit subject prepared (documentation policy); single-commit PR title will match

Related docs

Topic Document
Allowlist agent-command-policy.md
Change loop change-authoring-workflow.md
E2e running-e2e.md
CI ci-workflows/index.md