janus-cli 0.1.0 → 0.2.0

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