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.
- 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
|