From elixir-phoenix
Provides Elixir testing patterns for ExUnit, Mox mocks, factories, and LiveView helpers. Use on *_test.exs files, test/support/, factories, or fixing test failures.
npx claudepluginhub oliver-kriska/claude-elixir-phoenix --plugin elixir-phoenixThis skill uses the workspace's default tool permissions.
Quick reference for Elixir testing patterns.
Generates design tokens/docs from CSS/Tailwind/styled-components codebases, audits visual consistency across 10 dimensions, detects AI slop in UI.
Records polished WebM UI demo videos of web apps using Playwright with cursor overlay, natural pacing, and three-phase scripting. Activates for demo, walkthrough, screen recording, or tutorial requests.
Delivers idiomatic Kotlin patterns for null safety, immutability, sealed classes, coroutines, Flows, extensions, DSL builders, and Gradle DSL. Use when writing, reviewing, refactoring, or designing Kotlin code.
Quick reference for Elixir testing patterns.
async: true unless tests modify global state@callback behaviourbuild/2 in factories; insert/2 only when DB neededassert_receive with timeout for async operationsvalidate_required in the schema changeset. Missing fields cause cascading test failures| Testing | Use |
|---|---|
| Controller/API | use MyAppWeb.ConnCase |
| Context/Schema | use MyApp.DataCase |
| LiveView | use MyAppWeb.ConnCase + import Phoenix.LiveViewTest |
| Pure logic | use ExUnit.Case, async: true |
Application.put_envbuild() by default for speedinsert() only when you need DB ID, constraints, or persisted associations# Setup chain
setup [:create_user, :authenticate]
# Pattern matching assertion
assert {:ok, %User{name: name}} = create_user(attrs)
# Async message assertion
assert_receive {:user_created, _}, 5000
# Mox setup
setup :verify_on_exit!
expect(MockAPI, :call, fn _ -> {:ok, "data"} end)
# LiveView async
html = render_async(view) # MUST call for assign_async
| Wrong | Right |
|---|---|
Process.sleep(100) | assert_receive {:done, _}, 5000 |
insert(:user) in factory | build(:user) in factory |
async: true with set_mox_global() | async: false |
| Mock internal modules | Test through public API |
For detailed patterns, see:
${CLAUDE_SKILL_DIR}/references/exunit-patterns.md - Setup, assertions, tags${CLAUDE_SKILL_DIR}/references/mox-patterns.md - Behaviours, expect/stub, async${CLAUDE_SKILL_DIR}/references/liveview-testing.md - Forms, async, uploads${CLAUDE_SKILL_DIR}/references/factory-patterns.md - ExMachina, sequences, traits