bddfire 1.9.7 → 1.9.8

Sign up to get free protection for your applications and to get access to all the features.
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'