Can I Email: Check what styling email clients support

Email client styling support is fragmented, so feature checks help avoid unsupported CSS but cannot replace real-client rendering tests.

JustinFrench.com: Learn how to test your code

Eventually you’ll forget that you used to spend hours testing your code in a browser, and start complaining that your automated tests are taking minutes to run! You’ll have intense debates with co-workers about what to test and how to test it properly. You’ll start writing the test first to expose the bug or missing feature, then write the code required to pass the test.

Jasmine: Fixing common errors during initialization

Jasmine boot failures can stem from browser/module detection issues, causing jasmineRequire or getJasmineRequireObj() errors in Webpacker and esbuild setups.

Check if an object is an ActiveRecord scope

Checking for an ActiveRecord scope with is_a?(ActiveRecord::NamedScope::Scope) breaks in Rails 3 and misses unscoped model classes. respond_to?(:scoped) is a broader check.

Maintaining custom application tasks in Rails

Large Rails projects benefit from keeping application tasks slim, separating the executable wrapper from the business code, and testing both rake tasks and scripts.

Using Capybara finder methods with arbitrary matching conditions

Capybara matchers and finders can take a Ruby block for extra DOM conditions when built-in options are not enough. Script calls inside filter blocks need a temporary wait time to avoid Selenium timeouts.

How to test inside iframes with cucumber / capybara

Cucumber and Capybara ignore iframes by default, so tests must switch into the frame to interact with its content. Frame-aware step definitions can reduce repeated setup.

rspec_candy is now a gem

rspec_candy packages reusable RSpec helpers as a gem, making setup and updates easier for specs that need shared test utilities.

Regular Expressions - Cheat Sheet

Regular-expression syntax for matching characters, boundaries, alternation, quantifiers, look-arounds, and Ruby modifiers. Useful for writing and debugging patterns safely.

VCR fails if the same request is triggered multiple times

VCR records each request only once, so replaying repeated identical calls can fail unless allow_playback_repeats is enabled.

Scenario outlines in Cucumber

Template-based examples reduce repetition in behavior-driven tests and make repetitive cases easier to maintain.

Spreewald version 0.9.4 released

Fixes for flaky browser tests in Spreewald 0.9.4, including a resolved “I click on ...” step and broader Selenium retry handling.

Making Little Classes out of Big Ones

A too-large class is harder to understand, test, and change. Several refactoring approaches break it into smaller responsibilities.

Slack integration for deployments via Capistrano

Send deployment notifications from Capistrano to Slack channels using slackistrano and incoming webhooks, with customizable message formatting.

Syn - a Standalone Synthetic Event Library

Synthetic user events for typing, clicking, moving, and dragging provide realistic interaction handling for tests and automation.

How to find out the currently focused DOM element with JavaScript

document.activeElement returns the currently focused DOM element and is useful for checking focus state in JavaScript or Selenium tests.

Use Capybara on any HTML fragment or page

Capybara matchers can be applied to standalone HTML fragments or strings, not only full pages, making fragment assertions easier in test suites.

Prawn: How to add form fields to a PDF

PDF form fields in Prawn require manual AcroForm objects and widget annotations; viewers can render text inputs when appearance data and page annotations are set correctly.

RSpec: Running examples by name (or running a single shared example)

Shared RSpec examples can be rerun by --example substring match or example ID when rspec file:line cannot target them directly.

Error handling in DOM event listeners

DOM event handler exceptions are swallowed, so later listeners and dispatchEvent() continue running. Uncaught errors still reach the browser log and window error event.

Configuring Git with .gitconfig

Simple Git configuration for new developers: aliases, rebase defaults, diff tools, and GitLab push shortcuts for a cleaner workflow.

Limitations you should be aware of when Internet Explorer 9 parses CSS files

Internet Explorer 9 can fail on large stylesheets because of hard parser limits: file count, selector count, and nested @import depth.

patiently is now a gem

patiently helpers are now packaged as the patiently gem, with configurable retries and timeouts for feature and system specs.

Spec correct routing of custom URLs

When you roll custom URLs with hacks like routing-filter, you can put a spec like this into spec/routing/routing_spec.rb: