The purpose of the talk is to show some of the methodologies, tools and practices performed in MagmaLabs that have helped us to become a world-class company.
“Es un enfoque colaborativo para definir requetimientos y pruebas funcionales orientadas al negocio para productos de software con base en capturar e ilustrar los requerimientos usando ejemplos reales en lugar de sentencias abstractas”
Feature: Login In order to use the application As a user I want to be able to login Scenario: with invalid credentials Given I visit the / page And I have entered demo as my username And I have entered demo1234 as my password When I press Sign in Then I will be shown a message error Scenario: with valid credentials Given I have created an account in the past And I visit the /events page And I have entered demo as my username And I have entered demo1234 as my password When I press Sign in Then I will be redirected to events page
“Es un lenguaje de dominio específico, leíble desde el lago de negocios que permite describir el funcionamiento del software sin detallar cómo será implementado”
class User < ActiveRecord::Base # Método que prueba si un usuario tiene una cuenta de @magmalabs.io def has_magmalabs_account? !!self.email.match(/@magmalabs.io$/) end end
require 'rails_helper' describe User do let(:user_with_magmalabs_account) { User.create email: '[email protected]' } let(:user_with_gmail_account) { User.create email: '[email protected]' } describe '.has_magmalabs_account?' do it 'returns true when email ends with "@magmalabs.io"' do expect( user_with_magmalabs_account.has_magmalabs_account? ).to be true end it 'returns false when email ends with "other domain"' do expect( user_with_gmail_account.has_magmalabs_account? ).to be false end end end
Feature: Login In order to use the application As a user I want to be able to login Scenario: with invalid credentials Given I visit the / page And I have entered demo as my username And I have entered demo1234 as my password When I press Sign in Then I will be shown a message error Scenario: with valid credentials Given I have created an account in the past And I visit the /events page And I have entered demo as my username And I have entered demo1234 as my password When I press Sign in Then I will be redirected to events page
Feature: Login In order to use the application As a user I want to be able to login Scenario: with invalid credentials Given I visit the / page And I have entered demo as my username And I have entered demo1234 as my password When I press Sign in Then I will be shown a message error Scenario: with valid credentials Given I have created an account in the past And I visit the /events page And I have entered demo as my username And I have entered demo1234 as my password When I press Sign in Then I will be redirected to events page
Feature: Login In order to use the application As a user I want to be able to login Scenario: with invalid credentials Given I visit the / page And I have entered demo as my username And I have entered demo1234 as my password When I press Sign in Then I will be shown a message error Scenario: with valid credentials Given I have created an account in the past And I visit the /events page And I have entered demo as my username And I have entered demo1234 as my password When I press Sign in Then I will be redirected to events page
And(/^I have entered (.*) as my username$/) do |username| fill_in 'user[login]', with: username end And(/^I have entered (.*) as my password$/) do |password| fill_in 'user[password]', with: password end
Feature: Login In order to use the application As a user I want to be able to login Scenario: with invalid credentials Given I visit the / page And I have entered demo as my username And I have entered demo1234 as my password When I press Sign in Then I will be shown a message error Scenario: with valid credentials Given I have created an account in the past And I visit the /events page And I have entered demo as my username And I have entered demo1234 as my password When I press Sign in Then I will be redirected to events page
Given(/^I have created an account in the past$/) do @user = FactoryGirl.create :user, username: 'demo', password: 'demo1234' End Then(/^I will be shown a message error$/) do expect(page).to have_content 'Invalid login or password.' end When(/^I press Sign in$/) do click_button 'Sign in' end Then(/^I will be redirected to home page$/) do expect(page).to have_content 'Login successful' end Then(/^I will be redirected to (.*) page$/) do |url| path = URI.parse(current_url).path expect(path).to match "/#{url}" end
role :demo, %w{example.com example.org example.net} task :uptime do on roles(:demo), in: :parallel do |host| uptime = capture(:uptime) puts "#{host.hostname} reports: #{uptime}" end end
“Continuous Integration is the practice of merging development work with a Master/Trunk/Mainline branch constantly so that you can test changes, and test that changes work with other changes” http://blog.assembla.com/AssemblaBlog/tabid/12618/bid/92411/Continu ous-Delivery-vs-Continuous-Deployment-vs-Continuous-Integration-Wait- huh.aspx
“Continuous Delivery is the continual delivery of code to an environment once the developer feels the code is ready to ship.” http://blog.assembla.com/AssemblaBlog/tabid/12618/bid/92411/Continu ous-Delivery-vs-Continuous-Deployment-vs-Continuous-Integration-Wait- huh.aspx
“Continuous Deployment is the deployment or release of code to Production as soon as it is ready” http://blog.assembla.com/AssemblaBlog/tabid/12618/bid/92411/Continu ous-Delivery-vs-Continuous-Deployment-vs-Continuous-Integration-Wait- huh.aspx