Introduction In this tutorial, we’ll be looking at one of the main use cases for test doubles in Elixir: aiding in the interaction between domain logic and impure components that exist over the boundaries of an application. Tests relying on such components are usually brittle, and need to reach out to external resources whose state […]
Something’s coming
Rails Testing Handbook Available for Kindle
In April, we officially released Rails Testing Handbook, a free ebook in which our engineers shared how to write tests and practice BDD to develop sustainable Rails applications. The handbook teaches you all you need to know about the BDD approach of analyzing, testing, coding, and designing a system in one short feedback loop. BDD […]
Continuous Integration with Docker Gets More Space with New Semaphore Platform
Today we’re happy to announce general availability of the Docker Light platform. Based on Ubuntu 16.04 LTS, the environment provides one physical CPU (2 vCPUs), 4GB of RAM and 10GB of disk space.
Doubled Free CI/CD Capacity for Open Source
At Semaphore, for years we’ve been happy to support open source projects with a free continuous integration service. Today we’re increasing the free CI/CD capacity on all open source organizations from 2 to 4 Boxes.
Faster Rails CI with Automated Parallel Testing Available to All
Earlier, we launched Semaphore Boosters, a feature that allows you to automate parallelizing your RSpec and Cucumber tests in a few clicks. The feature has helped many teams to reduce their Rails CI build times by as much as 2 hours in some cases. Initially, the feature was available only to some users. It has […]
Setting up a BDD Stack on a Rails 5 Application
This post is adapted from Rails Testing Handbook, a free ebook on building sustainable Rails apps with BDD. In this tutorial, we will guide you through the process of generating a new Rails 5 application, with all the necessary tools to set up a behavior-driven development (BDD) flow. We will set up 5 tools that […]
Running Applications on a Docker Swarm Mode Cluster
Introduction This tutorial is the last in a series of tutorials concerning the container orchestration tool, Docker Swarm. In this series, we’ve already seen how to establish a Swarm cluster, schedule services to the cluster’s nodes, make those services consumable from within and outside the cluster, and update and rollback services in-flight. We’ve mainly focused […]
Rails Testing Antipatterns: Models
This is the second post in the series about antipatterns in testing Rails applications. See part 1 for thoughts related to fixtures and factories. Creating records when building would also work It is common sense to say that with plain ActiveRecord or a factory library you can both create and only instantiate new records. However, […]
Rails Testing Antipatterns: Fixtures and Factories
In the upcoming series of posts, we’ll explore some common antipatterns in writing tests for Rails applications. The presented opinions come from our experience in building web applications with Rails (we’ve been doing it since 2007) and is biased towards using RSpec and Cucumber. Developers working with other technologies will probably benefit from reading as […]
Working Effectively with Data Factories Using FactoryBot
This tutorial has been updated by Thiago AraΓΊjo Silva on 20 April 2018. Introduction In test-driven development, data is one of the requirements for a successful and thorough test. In order to be able to test all use cases of a given method, object or feature, you need to be able to define multiple sets […]
Lies, Damn Lies, and the State of Testing inΒ Rails
Ruby on Rails was the first major web framework to include automated tests as part of every new project. The effects have been enormously positive. Many developers have learned to write tests well, which in turn helped them get better at design. Experienced developers were drawn by Rails’ focus on productivity and beautiful code. Their […]
Rails Testing Handbook: A Free Ebook to Help You Build Better Apps
Bugs and messy code slow down development, and can make complex projects fail. We write code with good intentions, but in practice as complexity increases we need a system to help us avoid problems. This is where BDD (Behavior-driven Development) can make a huge difference: it provides us with a sustainable process for continuously producing […]
How to Deploy Rails Applications With Ansible, Capistrano and Semaphore
Introduction In this tutorial, we’ll cover how to create a server with Amazon Web Services, do configuration management with Ansible, deploy Rails applications with Capistrano, and how to do continuous integration with Semaphore. All the code from this tutorial is available in a repository on GitHub. If you get stuck, you can always compare it […]
PhantomJS Is Dead, Use Chrome Headless in Continuous Integration
If you’ve been using PhantomJS for continuous integration, please switch to Headless Chrome. Semaphore provides recent versions of both Chrome and chromedriver preinstalled out of the box.