agentleFS
LambdaTestLambdaTest/agent-skills/capybara-skill/SKILL.md

capybara-skill

Skill387 starsChanged 3 days agoMITView on GitHub

Generates Capybara E2E tests in Ruby with RSpec integration. Acceptance testing DSL for web apps. Use when user mentions "Capybara", "visit", "fill_in", "click_button", "Ruby E2E". Triggers on: "Capybara", "Ruby acceptance test", "fill_in", "click_button", "have_content".

Files
SKILL.md

Capybara Automation Skill

Core Patterns

Basic Test (RSpec)

require 'capybara/rspec'

RSpec.describe 'Login', type: :feature do
  it 'logs in with valid credentials' do
    visit '/login'
    fill_in 'Email', with: 'user@test.com'
    fill_in 'Password', with: 'password123'
    click_button 'Login'
    expect(page).to have_content('Dashboard')
    expect(page).to have_current_path('/dashboard')
  end

  it 'shows error for invalid credentials' do
    visit '/login'
    fill_in 'Email', with: 'wrong@test.com'
    fill_in 'Password', with: 'wrong'
    click_button 'Login'
    expect(page).to have_content('Invalid credentials')
  end
end

DSL

# Navigation
visit '/path'
go_back
go_forward

# Interacting
fill_in 'Label or Name', with: 'text'
choose 'Radio Label'
check 'Checkbox Label'
uncheck 'Checkbox Label'
select 'Option', from: 'Select Label'
attach_file 'Upload', '/path/to/file'
click_button 'Submit'
click_link 'More Info'
click_on 'Button or Link'

# Finding
find('#id')
find('.class')
find('[data-testid="x"]')
find(:xpath, '//div')
all('.items').count

# Matchers
expect(page).to have_content('text')
expect(page).to have_selector('#element')
expect(page).to have_css('.class')
expect(page).to have_button('Submit')
expect(page).to have_field('Email')
expect(page).to have_link('Click Here')
expect(page).to have_current_path('/expected')
expect(page).to have_no_content('error')

Within Scope

within('#login-form') do
  fill_in 'Email', with: 'user@test.com'
  click_button 'Login'
end

within_table('users') do
  expect(page).to have_content('Alice')
end

TestMu AI Cloud

Capybara.register_driver :lambdatest do |app|
  caps = Selenium::WebDriver::Remote::Capabilities.new(
    browserName: 'chrome',
    'LT:Options' => {
      user: ENV['LT_USERNAME'], accessKey: ENV['LT_ACCESS_KEY'],
      build: 'Capybara Build', name: 'Login Test',
      platform: 'Windows 11', video: true
    }
  )
  Capybara::Selenium::Driver.new(app,
    browser: :remote,
    url: 'https://hub.lambdatest.com/wd/hub',
    capabilities: caps)
end
Capybara.default_driver = :lambdatest

Setup: gem 'capybara' + gem 'selenium-webdriver' in Gemfile

Run: bundle exec rspec spec/features/

Cloud (TestMu AI)

For remote browser execution, see reference/cloud-integration.md and shared/testmu-cloud-reference.md.

Deep Patterns

See reference/playbook.md for production-grade patterns:

SectionWhat You Get
§1 Project SetupGemfile, Capybara config, driver registration, LambdaTest
§2 Feature SpecsLogin flows, JavaScript interactions, modals, async content
§3 Page ObjectsSitePrism pages with elements/sections, usage in specs
§4 API TestingRequest specs with auth headers, JSON assertions
§5 Database CleaningDatabaseCleaner transaction/truncation strategies
§6 Matchers & HelpersCustom helpers, sign_in, expect_flash
§7 CI/CD IntegrationGitHub Actions with Postgres, Redis, Chrome
§8 Debugging Table12 common problems with causes and fixes
§9 Best Practices14-item Capybara testing checklist

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

Reviews can't be read right now.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.