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.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.rspec +1 -1
- data/CHANGELOG.md +7 -0
- data/Guardfile +2 -2
- data/README.md +11 -20
- data/Rakefile +11 -1
- data/bin/janus +1 -1
- data/janus.gemspec +3 -1
- data/lib/janus.rb +0 -1
- data/lib/janus/browser.rb +19 -0
- data/lib/janus/command/record.rb +35 -4
- data/lib/janus/command/validate.rb +39 -5
- data/lib/janus/configuration.rb +21 -2
- data/lib/janus/core/engine.rb +26 -0
- data/lib/janus/core/error.rb +6 -0
- data/lib/janus/core/rule.rb +46 -0
- data/lib/janus/io/directory.rb +40 -0
- data/lib/janus/io/selenium.rb +43 -0
- data/lib/janus/screenshot.rb +7 -27
- data/lib/janus/version.rb +1 -1
- data/spec/integration/engine_spec.rb +50 -0
- data/spec/support/square-base.png +0 -0
- data/spec/support/square-big.png +0 -0
- data/spec/support/square-ten.png +0 -0
- data/spec/support/square-thirty.png +0 -0
- data/spec/support/square-twenty.png +0 -0
- data/spec/unit/janus/browser_spec.rb +57 -0
- data/spec/{janus → unit/janus}/command/initialize_spec.rb +1 -1
- data/spec/unit/janus/command/record_spec.rb +93 -0
- data/spec/unit/janus/command/validate_spec.rb +105 -0
- data/spec/{janus → unit/janus}/configuration_spec.rb +42 -0
- data/spec/unit/janus/core/engine_spec.rb +36 -0
- data/spec/unit/janus/core/error_spec.rb +4 -0
- data/spec/unit/janus/core/rule_spec.rb +65 -0
- data/spec/unit/janus/io/directory_spec.rb +83 -0
- data/spec/unit/janus/io/selenium_spec.rb +78 -0
- data/spec/unit/janus/screenshot_spec.rb +26 -0
- data/spec/{janus → unit/janus}/test_spec.rb +0 -0
- data/spec/{spec_helper.rb → unit/spec_helper.rb} +0 -0
- metadata +78 -19
- data/spec/janus/command/record_spec.rb +0 -36
- data/spec/janus/command/validate_spec.rb +0 -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
|