Silence CI warnings: give every phx-change form an id, rewrite mix.lock #600

Closed
opened 2026-10-16 23:21:26 +02:00 by simon · 0 comments
Owner

Observed in the CI log of the #538 PR (2026-10-16); all warnings pre-exist on main @ 0462bf4d and are unrelated to #538. The full CI run emits ~1000 warning lines, which buries real warnings.

Problem

  1. LiveView test warning "Detected a form with phx-change but missing id" (several hundred occurrences). Forms with phx-change but no id, e.g.:

    • search_members in lib/mv_web/live/group_live/show.ex and lib/mv_web/live/user_live/form.ex
    • filter_fields in lib/mv_web/components/add_filter_builder_component.ex
    • the filter value controls commit_group, commit_payment, commit_dates, commit_exit_range, commit_active_former
    • update_slug_confirmation

    Not only noise: without an id, LiveView cannot recover the form state after a reconnect.

  2. "found quoted keyword "" but the quotes are not required" (one per mix.lock entry, 108). The lockfile was written by an older Mix; the current Elixir warns when reading it. Harmless at runtime.

  3. Two [warning] Required custom fields validation: no actor in context log lines: expected test logging, out of scope unless trivially capturable with @tag :capture_log.

Proposal

  • Add a unique, stable id to every phx-change form (components: derive it from the component id, e.g. "#{@id}-search-form").
  • Set config :phoenix_live_view, :test_warnings, missing_form_id: :raise in config/test.exs so the regression fails tests instead of warning.
  • Rewrite mix.lock with the current Mix (e.g. mix deps.get after removing the quoting, or as part of the next dependency bump) without changing any locked version.

Acceptance criteria

  • just ci-dev output contains no "missing id" and no "quoted keyword" warnings.
  • missing_form_id: :raise is active in the test config.
  • mix.lock diff changes formatting only; no dependency version changes.
  • No CHANGELOG entry needed unless the reconnect form-recovery fix is considered user-facing (then Fixed).
Observed in the CI log of the #538 PR (2026-10-16); all warnings pre-exist on `main @ 0462bf4d` and are unrelated to #538. The full CI run emits ~1000 warning lines, which buries real warnings. ## Problem 1. **LiveView test warning "Detected a form with phx-change but missing id"** (several hundred occurrences). Forms with `phx-change` but no `id`, e.g.: - `search_members` in `lib/mv_web/live/group_live/show.ex` and `lib/mv_web/live/user_live/form.ex` - `filter_fields` in `lib/mv_web/components/add_filter_builder_component.ex` - the filter value controls `commit_group`, `commit_payment`, `commit_dates`, `commit_exit_range`, `commit_active_former` - `update_slug_confirmation` Not only noise: without an `id`, LiveView cannot recover the form state after a reconnect. 2. **"found quoted keyword "<dep>" but the quotes are not required"** (one per `mix.lock` entry, 108). The lockfile was written by an older Mix; the current Elixir warns when reading it. Harmless at runtime. 3. Two `[warning] Required custom fields validation: no actor in context` log lines: expected test logging, out of scope unless trivially capturable with `@tag :capture_log`. ## Proposal - Add a unique, stable `id` to every `phx-change` form (components: derive it from the component `id`, e.g. `"#{@id}-search-form"`). - Set `config :phoenix_live_view, :test_warnings, missing_form_id: :raise` in `config/test.exs` so the regression fails tests instead of warning. - Rewrite `mix.lock` with the current Mix (e.g. `mix deps.get` after removing the quoting, or as part of the next dependency bump) without changing any locked version. ## Acceptance criteria - `just ci-dev` output contains no "missing id" and no "quoted keyword" warnings. - `missing_form_id: :raise` is active in the test config. - `mix.lock` diff changes formatting only; no dependency version changes. - No CHANGELOG entry needed unless the reconnect form-recovery fix is considered user-facing (then *Fixed*).
simon closed this issue 2026-10-17 09:22:57 +02:00
Sign in to join this conversation.
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
local-it/mitgliederverwaltung#600
No description provided.