Awesome Testing

Markdown document

Podsumowanie sesji Codex

Lekcja 2: Dotenv i bezpieczniejsze credentiale

Historical artifacts may name disposable training credentials and environments. Do not reuse credentials, target course systems, or execute archived prompts without authorization.

Podsumowanie sesji Codex

Zakres sesji

Ta sesja Codex dotyczyła zmian w l2, gdzie w support/config.ts były jeszcze hardcodowane fallbacki dla danych logowania.

W sesji wydarzyły się trzy główne rzeczy:

  1. Konsultacja z Codex, jak bezpieczniej przechowywać credentiale.
  2. Implementacja .env flow w projekcie Playwright.
  3. Review aktualnego diffu i uproszczenie dokumentacji.

Prompty użyte w Codex

l2/support/config.ts I have crentials harcoded in the repo   username: process.env.API_LOGIN_USERNAME ?? 'slaweczek',
  password: process.env.API_LOGIN_PASSWORD ?? 'slaweczek',. What are playwright best practices how to store them securely? What options do we have? What is your recommendation?
Ok, implement .env flow, install dotenev, etc.
Analyse current git diff changes, is it safe to commit them? Perform a code review. Can things be simplified?

Co odpowiedział Codex w części konsultacyjnej?

Codex wskazał, że obecny kod jest tylko częściowo poprawny, bo czyta wartości z process.env, ale fallbacki nadal zapisują realne dane w repozytorium.

W odpowiedzi opisał kilka opcji:

  • zmienne środowiskowe przekazywane z shella,
  • lokalny plik .env,
  • .env.example jako szablon bez sekretów,
  • sekrety w CI/CD,
  • secret manager w większych projektach,
  • ostrożne używanie Playwright auth state, gdy pliki mogą zawierać wrażliwe dane.

Rekomendacja dla tego repo była praktyczna: usunąć fallbacki, użyć .env lokalnie, zostawić .env.example w repo i ładować wartości przez dotenv.

Co zaimplementował Codex?

Po promptcie implementacyjnym Codex:

  • dodał dotenv do zależności developerskich,
  • dodał .env.example,
  • dodał ładowanie .env w playwright.config.ts,
  • dodał ładowanie .env.local z override: true,
  • ustawił quiet: true, żeby dotenv nie zaśmiecał outputu testów,
  • usunął fallbacki slaweczek / slaweczek z support/config.ts,
  • dodał helper requiredEnv,
  • zaktualizował README o instrukcję skopiowania .env.example do .env,
  • uruchomił testy z wartościami przekazanymi przez environment.

Co sprawdził Codex po implementacji?

Codex wykonał kilka kontroli:

  • uruchomił testy bez wymaganych zmiennych, żeby potwierdzić czytelny błąd,
  • uruchomił testy z wartościami przekazanymi przez env,
  • zauważył, że dotenv wypisywał komunikaty do outputu,
  • wyciszył dotenv przez quiet: true,
  • ponownie uruchomił testy,
  • sprawdził finalny diff i status repo.

Wynik testów po poprawkach był pozytywny:

3 passed

Co wyszło w review?

Po promptcie:

Analyse current git diff changes, is it safe to commit them? Perform a code review. Can things be simplified?

Codex ocenił, że kierunek zmian jest poprawny i nie znalazł blockerów.

W review zwrócił uwagę, że:

  • credentiale nie mają już hardcodowanych fallbacków,
  • .env.example dokumentuje wymagane zmienne,
  • README.md opisuje lokalny workflow,
  • testy przechodzą,
  • zmiana jest bezpieczna do commita.

W trakcie tego review Codex doprecyzował też README, żeby nie opisywało folderu jako pustego startera, skoro zawiera już gotowy zestaw testów API.

Pliki, które były istotne w tej sesji

Najważniejsze pliki dotknięte przez sesję:

  • l2/package.json,
  • l2/package-lock.json,
  • l2/.env.example,
  • l2/playwright.config.ts,
  • l2/support/config.ts,
  • l2/README.md.

Finalny efekt sesji

Po tej sesji w l2 był dodany .env flow:

  • testy signin dalej przechodziły,
  • credentiale nie były już zapisane jako fallbacki w kodzie,
  • README opisywało lokalną konfigurację środowiska.