bddfire 1.9.7 → 1.9.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. checksums.yaml +5 -13
  2. data/Gemfile +1 -2
  3. data/README.markdown +68 -37
  4. data/Rakefile +4 -4
  5. data/bddfire.gemspec +19 -16
  6. data/bin/bddfire +116 -106
  7. data/features/step_definitions/all_steps.rb +1 -4
  8. data/features/support/env.rb +4 -4
  9. data/lib/bddfire/accesibility/axe.rb +40 -0
  10. data/lib/bddfire/assertions/assert.rb +2 -2
  11. data/lib/bddfire/page-objects/HomePage.rb +7 -9
  12. data/lib/bddfire/require.rb +5 -4
  13. data/lib/bddfire/version.rb +1 -1
  14. data/lib/bddfire/web/browser_actions.rb +1 -1
  15. data/lib/bddfire/web/headless_steps.rb +9 -10
  16. data/lib/bddfire/web/web_methods.rb +4 -5
  17. data/lib/bddfire/web/web_steps.rb +3 -3
  18. data/lib/bddfire.rb +1 -3
  19. data/pre-defined-steps/accessibility_steps.md +24 -0
  20. data/pre-defined-steps/capybara_steps.md +1 -1
  21. data/scaffold/accessibility/features/01_validation.feature +6 -0
  22. data/scaffold/accessibility/features/02_javascript.feature +6 -0
  23. data/scaffold/accessibility/features/03_language.feature +9 -0
  24. data/scaffold/accessibility/features/04_page_titles.feature +7 -0
  25. data/scaffold/accessibility/features/05_main_landmark.feature +7 -0
  26. data/scaffold/accessibility/features/06_headings.feature +7 -0
  27. data/scaffold/accessibility/features/07_minimum_resizable_text.feature +8 -0
  28. data/scaffold/accessibility/features/08_tabindex.feature +6 -0
  29. data/scaffold/accessibility/features/09_focusable_controls.feature +9 -0
  30. data/scaffold/accessibility/features/10_color_contrast.feature +10 -0
  31. data/scaffold/accessibility/features/11_image.feature +10 -0
  32. data/scaffold/accessibility/features/12_form.feature +11 -0
  33. data/scaffold/accessibility/features/13_table.feature +10 -0
  34. data/scaffold/accessibility/features/general_accessibility_check.feature +9 -0
  35. data/scaffold/accessibility/features/step_definitions/base.rb +22 -0
  36. data/scaffold/accessibility/features/step_definitions/form.rb +0 -0
  37. data/scaffold/accessibility/features/step_definitions/headings.rb +7 -0
  38. data/scaffold/accessibility/features/step_definitions/image.rb +0 -0
  39. data/scaffold/accessibility/features/step_definitions/javascript.rb +3 -0
  40. data/scaffold/accessibility/features/step_definitions/language.rb +0 -0
  41. data/scaffold/accessibility/features/step_definitions/main_landmark.rb +15 -0
  42. data/scaffold/accessibility/features/step_definitions/minimum_resizable_text.rb +11 -0
  43. data/scaffold/accessibility/features/step_definitions/page_title.rb +10 -0
  44. data/scaffold/accessibility/features/step_definitions/tabindex.rb +3 -0
  45. data/scaffold/accessibility/features/step_definitions/table.rb +0 -0
  46. data/scaffold/accessibility/features/step_definitions/validation.rb +4 -0
  47. data/scaffold/accessibility/features/support/capybara.rb +42 -0
  48. data/scaffold/config_files/.rubocop.yml +5 -5
  49. data/scaffold/config_files/Dockerfile +24 -0
  50. data/scaffold/config_files/Gemfile +9 -5
  51. data/scaffold/config_files/Rakefile +36 -32
  52. data/scaffold/config_files/docker.sh +82 -0
  53. data/scaffold/features/pages/HomePage.rb +10 -10
  54. data/scaffold/features/support/env.rb +128 -130
  55. data/scaffold/features/support/hooks.rb +5 -6
  56. data/scaffold/load/Dockerfile +28 -0
  57. data/scaffold/load/README.md +31 -0
  58. data/scaffold/load/conf/application.conf +7 -0
  59. data/scaffold/load/conf/gatling.conf +157 -0
  60. data/scaffold/load/conf/logback.xml +22 -0
  61. data/scaffold/load/conf/recorder.conf +51 -0
  62. data/scaffold/load/docker-jenkins.sh +77 -0
  63. data/scaffold/load/gatling_jenkins.sh +28 -0
  64. data/scaffold/load/gatling_local.sh +29 -0
  65. data/scaffold/load/user-files/bodies/.keep +0 -0
  66. data/scaffold/load/user-files/data/search.csv +2 -0
  67. data/scaffold/load/user-files/simulations/SampleLoadTEST.scala +22 -0
  68. data/scaffold/rake_tasks/cucumber.rb +2 -3
  69. data/scaffold/rake_tasks/cuke_sniffer.rb +3 -3
  70. data/scaffold/rake_tasks/rspec.rb +3 -4
  71. data/scaffold/rake_tasks/rubocop.rb +4 -5
  72. data/scaffold/rake_tasks/yard.rb +3 -4
  73. metadata +142 -55
  74. data/scaffold/config_files/.ruby-version +0 -1
  75. data/scaffold/config_files/.travis.yml +0 -16
  76. data/scaffold/features/pages/Abstract.rb +0 -14
  77. data/scaffold/features/support/helpers.erb +0 -6
  78. data/scaffold/features/support/responsive.rb +0 -19
  79. data/scaffold/lib/project/version.erb +0 -3
  80. data/scaffold/lib/project.erb +0 -2
  81. data/scaffold/spec/spec_helper.rb +0 -8
@@ -3,20 +3,18 @@ class HomePage
3
3
  attr_accessor :title, :title_text
4
4
  end
5
5
 
6
- self.title_text = "Your Site "
7
- self.title = "your_css_selector"
6
+ self.title_text = 'Your Site '
7
+ self.title = 'your_css_selector'
8
8
 
9
- def initialize(session)
9
+ def initialize(_session)
10
10
  @session = Capybara.current_session
11
11
  end
12
12
 
13
13
  def visit_home_page
14
- @session.visit("your_url")
14
+ @session.visit('your_url')
15
15
  end
16
16
  end
17
17
 
18
- =begin
19
- You can the use these methods in the step_definitions as
20
- @home_page = HomePage.new(Capybara.current_session)
21
- @home_page.visit_home_page
22
- =end
18
+ # You can the use these methods in the step_definitions as
19
+ # @home_page = HomePage.new(Capybara.current_session)
20
+ # @home_page.visit_home_page
@@ -1,4 +1,5 @@
1
- Dir[File.dirname(__FILE__) + '/web/*.rb'].each {|file| require file }
2
- Dir[File.dirname(__FILE__) + '/mobile/*.rb'].each {|file| require file }
3
- Dir[File.dirname(__FILE__) + '/assertions/*.rb'].each {|file| require file }
4
- Dir[File.dirname(__FILE__) + '/page-objects/*.rb'].each {|file| require file }
1
+ Dir[File.dirname(__FILE__) + '/web/*.rb'].each { |file| require file }
2
+ Dir[File.dirname(__FILE__) + '/mobile/*.rb'].each { |file| require file }
3
+ Dir[File.dirname(__FILE__) + '/assertions/*.rb'].each { |file| require file }
4
+ Dir[File.dirname(__FILE__) + '/page-objects/*.rb'].each { |file| require file }
5
+ Dir[File.dirname(__FILE__) + '/accessibility/*.rb'].each { |file| require file }
@@ -1,3 +1,3 @@
1
1
  module BDDfire
2
- VERSION = "1.9.7"
2
+ VERSION = '1.9.8'.freeze
3
3
  end
@@ -4,7 +4,7 @@ Given(/^I am on the page "(.*?)"$/) do |url|
4
4
  end
5
5
 
6
6
  When(/^I go forward using browser$/) do
7
- go_forward
7
+ go_forward
8
8
  end
9
9
 
10
10
  When(/^I go back using browser$/) do
@@ -10,21 +10,21 @@ Then(/^response headers should contain "(.*?)"$/) do |expected_header|
10
10
  end
11
11
 
12
12
  Then(/^page source should contain "(.*?)"$/) do |data|
13
- source = page.driver.source
14
- expect(source).to include(data)
13
+ source = page.driver.source
14
+ expect(source).to include(data)
15
15
  end
16
16
 
17
17
  When(/^I clear network traffic$/) do
18
- page.driver.clear_network_traffic
18
+ page.driver.clear_network_traffic
19
19
  end
20
20
 
21
21
  When(/^I called network traffic of the page$/) do
22
22
  page.driver.network_traffic.each do |request|
23
- request.response_parts.uniq(&:url).each do |response|
24
- puts "\n Responce URL #{response.url}: \n Status #{response.status}"
23
+ request.response_parts.uniq(&:url).each do |response|
24
+ puts "\n Responce URL #{response.url}: \n Status #{response.status}"
25
+ end
25
26
  end
26
27
  end
27
- end
28
28
 
29
29
  Then(/^network traffic should contains resource "(.*?)"$/) do |resource|
30
30
  traffic = page.driver.network_traffic
@@ -35,7 +35,7 @@ When(/^I request response headers$/) do
35
35
  puts page.response_headers.to_a
36
36
  end
37
37
 
38
- When(/^I request page "(.*?)" with header name "(.*?)" value "(.*?)"$/) do |url, name, value|
38
+ When(/^I request page "(.*?)" with header name "(.*?)" value "(.*?)"$/) do |url, _name, _value|
39
39
  page.driver.headers = { '#{name}' => '#{value}' }
40
40
  visit(url)
41
41
  end
@@ -44,13 +44,12 @@ When(/^I set the cookie name "(.*?)" with value "(.*?)"$/) do |name, value|
44
44
  page.driver.set_cookie(name, value)
45
45
  end
46
46
 
47
-
48
47
  Then(/^I should see the cookie "(.*?)"$/) do |cookie|
49
48
  cookies = page.driver.cookies
50
49
  expect(cookies).to include(cookie)
51
50
  end
52
51
 
53
- When(/^I removed cookie "(.*?)"$/) do |arg1|
52
+ When(/^I removed cookie "(.*?)"$/) do |_arg1|
54
53
  page.driver.remove_cookie
55
54
  end
56
55
 
@@ -59,6 +58,6 @@ When(/^I clear all cookies$/) do
59
58
  end
60
59
 
61
60
  When(/^I visit page with base authorization user "(.*?)" and password "(.*?)"$/) do |user, password|
62
- #page.driver.headers = {'Authorization': 'Basic '+ Base64.encode64('username:password')};
61
+ # page.driver.headers = {'Authorization': 'Basic '+ Base64.encode64('username:password')};
63
62
  page.driver.basic_authorize(user, password)
64
63
  end
@@ -1,18 +1,17 @@
1
1
  require 'net/https'
2
2
 
3
-
4
- def check_valid_locator_type? type
3
+ def check_valid_locator_type?(type)
5
4
  %w(id class css name xpath).include? type
6
5
  end
7
6
 
8
- def check_selector type
7
+ def check_selector(type)
9
8
  raise "Please use correct locator only id,name,css,xpath are supported - #{type}" unless check_valid_locator_type? type
10
9
  end
11
10
 
12
- def check_valid_option_by? option_by
11
+ def check_valid_option_by?(option_by)
13
12
  %w(text value index).include? option_by
14
13
  end
15
14
 
16
- def validate_option_by option_by
15
+ def validate_option_by(option_by)
17
16
  raise "Please select valid option, invalid option - #{option_by}" unless check_valid_option_by? option_by
18
17
  end
@@ -11,11 +11,11 @@ Then(/^I should see "(.*?)"$/) do |text|
11
11
  page.should have_content text
12
12
  end
13
13
 
14
- When(/^I fill "(.*?)" into field with (.+) "(.*?)"$/) do |data, type, locator|
14
+ When(/^I fill "(.*?)" into field with (.+) "(.*?)"$/) do |data, _type, locator|
15
15
  fill_in locator, with: data
16
16
  end
17
17
 
18
- When(/^I select the "(.*?)" link$/) do |link|
18
+ When(/^I select the "(.*?)" link$/) do |link|
19
19
  click_link(link)
20
20
  end
21
21
 
@@ -40,7 +40,7 @@ When(/^I choose radio button"(.*?)"$/) do |radiobutton|
40
40
  end
41
41
 
42
42
  When(/^I select option "(.*?)" from the dropdown "(.*?)"$/) do |option, dropdown|
43
- select(option, :from => dropdown)
43
+ select(option, from: dropdown)
44
44
  end
45
45
 
46
46
  When(/^I attach the file "(.*?)" to the field "(.*?)"$/) do |file, locator|
data/lib/bddfire.rb CHANGED
@@ -1,6 +1,4 @@
1
- Dir[File.dirname(__FILE__) + '/bddfire/*.rb'].each {|file| require file }
1
+ Dir[File.dirname(__FILE__) + '/bddfire/*.rb'].each { |file| require file }
2
2
 
3
3
  module BDDfire
4
-
5
-
6
4
  end
@@ -0,0 +1,24 @@
1
+ # Accessibility Steps
2
+
3
+
4
+ Then page should have title html attribute with meaningful text
5
+ Then there should be one instance of role=main as an attribute of an HTML element
6
+ Then There must be no instances of attributes with positive or zero values
7
+ Then the page should have exactly one h1 heading and heading order must follow
8
+
9
+
10
+ ## Axe Steps
11
+
12
+ You can still use all the steps from Axe Matcher
13
+
14
+ Then the page should be accessible
15
+ Then the page should be accessible within "#selector"
16
+ Then the page should be accessible excluding "#selector"
17
+ Then the page should be accessible within "main"; excluding "aside"
18
+ Then the page should be accessible within "main" but excluding "aside"
19
+ Then the page should be accessible according to: tag-name
20
+ Then the page should be accessible within "#header"; according to: best-practice
21
+ Then the page should be accessible according to: wcag2a; checking: color-contrast
22
+ Then the page should be accessible according to: wcag2a and checking: color-contrast
23
+ Then the page should be accessible according to: wcag2a; skipping: accesskeys
24
+ Then the page should be accessible according to: wcag2a but skipping: accesskeys
@@ -20,7 +20,7 @@
20
20
 
21
21
  Given I am on “url”
22
22
  When I fill in “element” with the text “text”
23
- When I selet the “link” link
23
+ When I select the “link” link
24
24
  When I select the "button" button
25
25
  When I click on element having text “text"
26
26
  When I check “checkbox”
@@ -0,0 +1,6 @@
1
+ @validation
2
+ Feature: HTML Validation
3
+
4
+ Scenario: Validate page with W3C validator for CSS, JavaScript and Feed
5
+ Given I am on the page
6
+ Then the page should have valid Markup, CSS, JavaScript and feeds
@@ -0,0 +1,6 @@
1
+ @javascript
2
+ Feature: JavaScript Feature
3
+
4
+ Scenario: JavaScript based scenario
5
+ Given I am on the page
6
+ Then the core content of the page should be accessible without JavaScrpt and css
@@ -0,0 +1,9 @@
1
+ @language
2
+ Feature: Specify content language
3
+
4
+ Scenario Outline: Check for other elements with lang attributes
5
+ Given I am on the page
6
+ Then page should have all relevant "<attributes>" for the accessibility guideline
7
+ Examples:
8
+ |attributes|
9
+ |html-lang |
@@ -0,0 +1,7 @@
1
+ @title
2
+ Feature: Page title
3
+
4
+ Scenario: Check page has title with meaningful text
5
+ Given I am on the page
6
+ Then page should have title html attribute with meaningful text
7
+ And title attribute shouldn't repeat the content
@@ -0,0 +1,7 @@
1
+ @main_landmark
2
+ Feature: Main Landmark feature
3
+
4
+
5
+ Scenario: Check aria role 'main' in the page
6
+ Given I am on the page
7
+ Then there should be one instance of role=main as an attribute of an HTML element
@@ -0,0 +1,7 @@
1
+ @headings
2
+ Feature: Heading order
3
+
4
+
5
+ Scenario: Heading order must be followed in html schema
6
+ Given I am on the page
7
+ Then the page should have exactly one h1 heading and heading order must follow
@@ -0,0 +1,8 @@
1
+ @resize
2
+ Feature: Minimum and Re-sizable text size
3
+
4
+ Scenario: Text size is readable
5
+ Given I am on the page
6
+ Then Text must be styled with units that are resizable in all browsers.
7
+ And Content must be visible and usable with text resized to 200% of normal.
8
+ And Content must be visible and usable with page zoomed to 200% of normal.
@@ -0,0 +1,6 @@
1
+ @tabindex
2
+ Feature: Check tabindex
3
+
4
+ Scenario: Check Tabindex rule
5
+ Given I am on the page
6
+ Then There must be no instances of attributes with positive or zero values
@@ -0,0 +1,9 @@
1
+ @focus
2
+ Feature: Focusable Controls
3
+
4
+ Scenario Outline: Identify each control on the page
5
+ Given I am on the page
6
+ Then page should have all relevant "<attributes>" for the accessibility guideline
7
+ Examples:
8
+ | attributes |
9
+ | blink |
@@ -0,0 +1,10 @@
1
+ @color_contrast
2
+ Feature: Color Contrast
3
+
4
+ Scenario Outline: Page should have valid color combinations according to BBC accessibility standards
5
+ Given I am on the page
6
+ Then page should have all relevant "<attributes>" for the accessibility guideline
7
+ Examples:
8
+ | attributes |
9
+ | accesskeys |
10
+ | color-contrast |
@@ -0,0 +1,10 @@
1
+ @images
2
+ Feature: Image Accessibility
3
+
4
+ Scenario Outline: Images in the page should be accessible
5
+ Given I am on the page
6
+ Then page should have all relevant "<attributes>" for the accessibility guideline
7
+
8
+ Examples:
9
+ | attributes |
10
+ | image-alt |
@@ -0,0 +1,11 @@
1
+ @forms
2
+ Feature: Form on the page
3
+
4
+ Scenario Outline: Make sure all the form elements are accessible
5
+ Given I am on the page
6
+ Then page should have all relevant "<attributes>" for the accessibility guideline
7
+
8
+ Examples:
9
+ | attributes |
10
+ | label-title-only |
11
+
@@ -0,0 +1,10 @@
1
+ @tables
2
+ Feature: Table Accessibility
3
+
4
+ Scenario Outline: Tables in the page are accessibile
5
+ Given I am on the page
6
+ Then page should have all relevant "<attributes>" for the accessibility guideline
7
+
8
+ Examples:
9
+ | attributes |
10
+ | data-table |
@@ -0,0 +1,9 @@
1
+ @all
2
+ Feature: Accessibility Standards
3
+
4
+
5
+ Scenario: Check the page against BBC Accessibility Standards
6
+ Given I am on the page
7
+ Then the page should be accessible
8
+ And the page should be accessible according to: wcag2a
9
+ And the page should be accessible according to: wcag2aa
@@ -0,0 +1,22 @@
1
+ require 'axe/cucumber/step_definitions'
2
+
3
+ Given(/^I am on the page$/) do
4
+ @page = Capybara.current_session
5
+ @page.visit(ENV['URL'])
6
+ puts "=====You are currently checking the page====="
7
+ puts @page.current_url
8
+ sleep(1)
9
+ end
10
+
11
+ Then(/^page should have all relevant "([^"]*)" for the accessibility guideline$/) do |attributes|
12
+ ban = ENV['EXCLUDE'] || "#crapy-selector"
13
+ step 'the page should be accessible checking: #{attributes} but excluding "#{ban}"'
14
+ end
15
+
16
+ Then(/^page should not check section "([^"]*)" for the accessibility guideline$/) do |section|
17
+ step 'the page should be accessible excluding "#{section}"'
18
+ end
19
+
20
+ Then(/^page should check section"([^"]*)" for the accessibility guideline$/) do |section|
21
+ step 'the page should be accessible excluding "#{section}"'
22
+ end
@@ -0,0 +1,7 @@
1
+ Then(/^the page should have exactly one h(\d+) heading and heading order must follow$/) do |headings|
2
+ @page = Capybara.current_session
3
+ @page.html.should include('<h1')
4
+ @page.should have_css("h1", :count => 1)
5
+ step 'the page should be accessible checking: heading-order'
6
+ step 'the page should be accessible checking: empty-heading'
7
+ end
@@ -0,0 +1,3 @@
1
+ Then(/^the core ontent of the page should be accessible without JavaScrpt and css$/) do
2
+ puts "TO DO"
3
+ end
@@ -0,0 +1,15 @@
1
+ Then(/^there should be one instance of role=main as an attribute of an HTML element$/) do
2
+ @page = Capybara.current_session
3
+ @page.html.should include('role="main"')
4
+ step 'the page should be accessible checking: area-alt'
5
+ step 'the page should be accessible checking: aria-allowed-attr'
6
+ step 'the page should be accessible checking: aria-required-attr'
7
+ step 'the page should be accessible checking: aria-required-children'
8
+ step 'the page should be accessible checking: aria-required-parent'
9
+ step 'the page should be accessible checking: aria-valid-attr-value'
10
+ step 'the page should be accessible checking: aria-roles'
11
+ step 'the page should be accessible checking: aria-valid-attr-value'
12
+ step 'the page should be accessible checking: aria-valid-attr'
13
+ step 'the page should be accessible checking: aria-roles'
14
+
15
+ end
@@ -0,0 +1,11 @@
1
+ Then(/^Text must be styled with units that are resizable in all browsers\.$/) do
2
+ pending # Write code here that turns the phrase above into concrete actions
3
+ end
4
+
5
+ Then(/^Content must be visible and usable with text resized to (\d+)% of normal\.$/) do |arg1|
6
+ pending # Write code here that turns the phrase above into concrete actions
7
+ end
8
+
9
+ Then(/^Content must be visible and usable with page zoomed to (\d+)% of normal\.$/) do |arg1|
10
+ pending # Write code here that turns the phrase above into concrete actions
11
+ end
@@ -0,0 +1,10 @@
1
+ Then(/^page should have title html attribute with meaningful text$/) do
2
+ @page = Capybara.current_session
3
+ title = @page.title
4
+ puts "======You page title is '#{title}'. We hope it's meaningful===="
5
+ expect(title).not_to be_empty
6
+ end
7
+
8
+ Then(/^title atttribute shouldn't reapeat the content$/) do
9
+ #to do
10
+ end
@@ -0,0 +1,3 @@
1
+ Then(/^There must be no instances of attributes with positive or zero values$/) do
2
+ step 'the page should be accessible checking: tabindex'
3
+ end
@@ -0,0 +1,4 @@
1
+ Then(/^the page should have valid Markup, CSS, JavaScript and feeds$/) do
2
+ @page = Capybara.current_session
3
+ @page.should be_valid_markup
4
+ end
@@ -0,0 +1,42 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+ require 'capybara'
4
+ require 'capybara/dsl'
5
+ require 'capybara/poltergeist'
6
+ require 'axe/cucumber/step_definitions'
7
+ require 'rest-client'
8
+ require 'rspec'
9
+ require 'capybara/rspec'
10
+ require 'be_valid_asset'
11
+ include BeValidAsset
12
+
13
+ BeValidAsset::Configuration.display_invalid_content = true
14
+
15
+
16
+ url = ENV['URL']
17
+ ban = ENV['EXCLUDE'] || "#crapy-selector"
18
+
19
+ Capybara.current_driver = :poltergeist
20
+ Capybara.default_driver = :poltergeist
21
+ Capybara.configure do |config|
22
+ config.run_server = false
23
+ config.javascript_driver = config.default_driver
24
+ config.default_selector = :css
25
+ config.default_wait_time = 60
26
+ end
27
+ Capybara.register_driver :poltergeist do |app|
28
+ options = {
29
+ :js_errors => false,
30
+ :timeout => 180,
31
+ :debug => false
32
+ }
33
+ Capybara::Poltergeist::Driver.new(app, options)
34
+ end
35
+
36
+ Before do
37
+ Capybara.use_default_driver
38
+ end
39
+
40
+ After do
41
+ Capybara.reset_sessions!
42
+ end
@@ -8,7 +8,7 @@ AllCops:
8
8
  - tmp/**/*
9
9
 
10
10
  CollectionMethods:
11
- Enabled: false
11
+ Enabled: false
12
12
 
13
13
  Encoding:
14
14
  Enabled: false
@@ -30,14 +30,14 @@ MethodLength:
30
30
  Max: 20
31
31
 
32
32
  Blocks:
33
- Enabled: false
34
- Enabled: false
33
+ Enabled: false
34
+ Enabled: false
35
35
 
36
36
  AlignParameters:
37
37
  Enabled: false
38
38
 
39
39
  IfUnlessModifier:
40
- Enabled: false
40
+ Enabled: false
41
41
 
42
- TrailingComma:
42
+ TrailingCommaInLiteral:
43
43
  Enabled: false
@@ -0,0 +1,24 @@
1
+ FROM ruby:latest
2
+
3
+ MAINTAINER bddfire@bddire.co.uk
4
+
5
+ ENV PHANTOM_JS="phantomjs-2.1.1-linux-x86_64"
6
+
7
+ RUN apt-get update && \
8
+ apt-get upgrade -y && \
9
+ apt-get install -y build-essential chrpath libssl-dev libxft-dev libfreetype6 libfreetype6-dev libfontconfig1 libfontconfig1-dev && \
10
+ curl -L -O https://bitbucket.org/ariya/phantomjs/downloads/$PHANTOM_JS.tar.bz2 && \
11
+ tar xvjf $PHANTOM_JS.tar.bz2 && \
12
+ mv $PHANTOM_JS /usr/local/share && \
13
+ ln -sf /usr/local/share/$PHANTOM_JS/bin/phantomjs /usr/local/bin
14
+
15
+ RUN apt-get update && apt-get install -y \
16
+ build-essential \
17
+ nodejs
18
+
19
+ RUN mkdir -p /opt/bddfire
20
+ WORKDIR /opt/bddfire
21
+
22
+
23
+ RUN gem install bundler
24
+ RUN gem install nokogiri
@@ -1,8 +1,8 @@
1
- source "http://rubygems.org"
2
- gem 'nokogiri', '1.6.1'
1
+ source 'http://rubygems.org'
2
+ gem 'nokogiri', '1.5.9'
3
3
  gem 'cucumber'
4
4
  gem 'capybara'
5
- gem 'bddfire', "1.9.4"
5
+ gem 'bddfire', '1.9.4'
6
6
  gem 'selenium-webdriver'
7
7
  gem 'poltergeist'
8
8
  gem 'rake'
@@ -14,5 +14,9 @@ gem 'json'
14
14
  gem 'rspec'
15
15
  gem 'relish'
16
16
  gem 'rubocop-checkstyle_formatter'
17
- gem "parallel_tests"
18
- gem "chromedriver-helper", "0.0.6"
17
+ gem 'parallel_tests'
18
+ gem 'axe-matchers'
19
+ gem 'site_prism'
20
+ gem 'chromedriver-helper', '0.0.6'
21
+ gem 'magic_encoding'
22
+ gem 'be_valid_asset'