janus-cli 0.1.0 → 0.2.0

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 (44) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.rspec +1 -1
  4. data/CHANGELOG.md +7 -0
  5. data/Guardfile +2 -2
  6. data/README.md +11 -20
  7. data/Rakefile +11 -1
  8. data/bin/janus +1 -1
  9. data/janus.gemspec +3 -1
  10. data/lib/janus.rb +0 -1
  11. data/lib/janus/browser.rb +19 -0
  12. data/lib/janus/command/record.rb +35 -4
  13. data/lib/janus/command/validate.rb +39 -5
  14. data/lib/janus/configuration.rb +21 -2
  15. data/lib/janus/core/engine.rb +26 -0
  16. data/lib/janus/core/error.rb +6 -0
  17. data/lib/janus/core/rule.rb +46 -0
  18. data/lib/janus/io/directory.rb +40 -0
  19. data/lib/janus/io/selenium.rb +43 -0
  20. data/lib/janus/screenshot.rb +7 -27
  21. data/lib/janus/version.rb +1 -1
  22. data/spec/integration/engine_spec.rb +50 -0
  23. data/spec/support/square-base.png +0 -0
  24. data/spec/support/square-big.png +0 -0
  25. data/spec/support/square-ten.png +0 -0
  26. data/spec/support/square-thirty.png +0 -0
  27. data/spec/support/square-twenty.png +0 -0
  28. data/spec/unit/janus/browser_spec.rb +57 -0
  29. data/spec/{janus → unit/janus}/command/initialize_spec.rb +1 -1
  30. data/spec/unit/janus/command/record_spec.rb +93 -0
  31. data/spec/unit/janus/command/validate_spec.rb +105 -0
  32. data/spec/{janus → unit/janus}/configuration_spec.rb +42 -0
  33. data/spec/unit/janus/core/engine_spec.rb +36 -0
  34. data/spec/unit/janus/core/error_spec.rb +4 -0
  35. data/spec/unit/janus/core/rule_spec.rb +65 -0
  36. data/spec/unit/janus/io/directory_spec.rb +83 -0
  37. data/spec/unit/janus/io/selenium_spec.rb +78 -0
  38. data/spec/unit/janus/screenshot_spec.rb +26 -0
  39. data/spec/{janus → unit/janus}/test_spec.rb +0 -0
  40. data/spec/{spec_helper.rb → unit/spec_helper.rb} +0 -0
  41. metadata +78 -19
  42. data/spec/janus/command/record_spec.rb +0 -36
  43. data/spec/janus/command/validate_spec.rb +0 -44
  44. data/spec/janus/screenshot_spec.rb +0 -79
@@ -1,36 +0,0 @@
1
- require 'janus/configuration'
2
- require 'janus/test'
3
- require 'janus/command/record'
4
-
5
- describe Janus::Command::Record do
6
- let(:config) { Janus::Configuration.new({}) }
7
- let(:record) { Janus::Command::Record.new(config) }
8
-
9
- describe '#execute' do
10
- it 'records screenshot for each configured test' do
11
- config.stub(:tests) { ['one', 'two'] }
12
-
13
- record.should_receive(:record_screenshot).with('one')
14
- record.should_receive(:record_screenshot).with('two')
15
-
16
- record.execute
17
- end
18
- end
19
-
20
- describe '#record_screenshot' do
21
- let(:test) { Janus::Test.new({ name: 'name', url: 'ur' }) }
22
- let(:screenshot) { double }
23
- let(:recorder) { double }
24
-
25
- it 'saves screenshot of test URL' do
26
- config.stub(:username) { 'username' }
27
- config.stub(:access_key) { 'access key' }
28
-
29
- Janus::Screenshot.should_receive(:capture).with(test, username: 'username', access_key: 'access key').and_return(screenshot)
30
-
31
- screenshot.should_receive(:save)
32
-
33
- record.record_screenshot(test)
34
- end
35
- end
36
- end
@@ -1,44 +0,0 @@
1
- require 'janus/configuration'
2
- require 'janus/screenshot'
3
- require 'janus/command/validate'
4
-
5
- describe Janus::Command::Validate do
6
- let(:config) { Janus::Configuration.new({}) }
7
- let(:validate) { Janus::Command::Validate.new(config) }
8
-
9
- describe '#execute' do
10
- it 'validates screenshots for each configured test' do
11
- config.stub(:tests) { %w(one two) }
12
-
13
- validate.should_receive(:validate_screenshot).with('one')
14
- validate.should_receive(:validate_screenshot).with('two')
15
-
16
- validate.execute
17
- end
18
- end
19
-
20
- describe '#validate_screenshot' do
21
- let(:test) { Janus::Test.new('name' => 'my test') }
22
- let(:original) { Janus::Screenshot.new }
23
- let(:fresh) { Janus::Screenshot.new }
24
-
25
- before :each do
26
- Janus::Screenshot.stub(:load) { original }
27
- Janus::Screenshot.stub(:capture) { fresh }
28
- end
29
-
30
- it 'raises exception when screenshots do not match' do
31
- original.stub(:image) { 'original data' }
32
- fresh.stub(:image) { 'changes' }
33
-
34
- expect { validate.validate_screenshot(test) }.to raise_error('my test: Screenshots did not match!')
35
- end
36
-
37
- it 'does not raise exception when screenshots match' do
38
- original.stub(:image) { 'original data' }
39
- fresh.stub(:image) { 'original data' }
40
-
41
- expect { validate.validate_screenshot(test) }.not_to raise_error
42
- end
43
- end
44
- end
@@ -1,79 +0,0 @@
1
- require 'janus/screenshot'
2
- require 'janus/test'
3
-
4
- describe Janus::Screenshot do
5
- let(:image) { 'image data' }
6
- let(:test) { Janus::Test.new({ 'name' => 'test-name', 'url' => 'this is my url' }) }
7
- let(:screenshot) { Janus::Screenshot.new(test: test, image: image) }
8
-
9
- describe '::capture' do
10
- let(:png) { double }
11
- let(:driver) { double }
12
-
13
- before :each do
14
- Selenium::WebDriver.stub(:for) { driver }
15
-
16
- driver.stub(:get)
17
- driver.stub(:screenshot_as)
18
- end
19
-
20
- it 'builds driver for specified user' do
21
- Selenium::WebDriver.should_receive(:for).with(:remote, {
22
- url: 'http://username:access key@ondemand.saucelabs.com/wd/hub',
23
- desired_capabilities: Selenium::WebDriver::Remote::Capabilities.chrome
24
- }).and_return(driver)
25
-
26
- Janus::Screenshot.capture(test, username: 'username', access_key: 'access key')
27
- end
28
-
29
- it 'takes screenshot of provided URL' do
30
- driver.should_receive(:get).with('this is my url')
31
- driver.should_receive(:screenshot_as).with(:png).and_return(png)
32
-
33
- screenshot = Janus::Screenshot.capture(test)
34
- screenshot.test.should be(test)
35
- screenshot.image.should be(png)
36
- end
37
- end
38
-
39
- describe '::load' do
40
- it 'loads screenshot from disk' do
41
- IO.stub(:read) do |path, mode|
42
- 'my image' if path == 'base/my test.janus/screenshot.png'
43
- end
44
-
45
- test = Janus::Test.new('name' => 'my test')
46
- screenshot = Janus::Screenshot.load(test, path: 'base')
47
-
48
- screenshot.test.should == test
49
- screenshot.image.should == 'my image'
50
- end
51
- end
52
-
53
- describe '#save' do
54
- it 'creates test directory if it does not exist' do
55
- IO.stub(:write)
56
- Dir.stub(:exists?) { |p| false }
57
-
58
- FileUtils.should_receive(:mkpath).with('base/test-name.janus')
59
-
60
- screenshot.save('base')
61
- end
62
-
63
- it 'does not create test directory if it exists' do
64
- IO.stub(:write)
65
- Dir.stub(:exists?) { |p| p == 'base/test-name.janus' }
66
-
67
- FileUtils.should_not_receive(:mkpath).with('base/test-name.janus')
68
-
69
- screenshot.save('base')
70
- end
71
-
72
- it 'writes screenshot to disk' do
73
- FileUtils.stub(:mkpath)
74
- IO.should_receive(:write).with('base/test-name.janus/screenshot.png', image, mode: 'wb')
75
-
76
- screenshot.save('base')
77
- end
78
- end
79
- end