ui_changed 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/app/assets/javascripts/ui_changed/application.js +17 -0
- data/app/assets/javascripts/ui_changed/screenshots.js +280 -0
- data/app/assets/stylesheets/scaffold.css +56 -0
- data/app/assets/stylesheets/ui_changed/application.css.scss +17 -0
- data/app/assets/stylesheets/ui_changed/screenshot_ignore_urls.css +4 -0
- data/app/assets/stylesheets/ui_changed/screenshots.css +24 -0
- data/app/controllers/ui_changed/application_controller.rb +4 -0
- data/app/controllers/ui_changed/screenshot_ignore_urls_controller.rb +61 -0
- data/app/controllers/ui_changed/screenshots_controller.rb +266 -0
- data/app/controllers/ui_changed/screenshots_controller_base.rb +26 -0
- data/app/helpers/ui_changed/application_helper.rb +45 -0
- data/app/helpers/ui_changed/screenshot_ignore_urls_helper.rb +4 -0
- data/app/helpers/ui_changed/screenshots_helper.rb +4 -0
- data/app/mailers/ui_changed/notifications_mailer.rb +57 -0
- data/app/models/ui_changed/all_screenshot.rb +11 -0
- data/app/models/ui_changed/config_helper.rb +12 -0
- data/app/models/ui_changed/screenshot.rb +258 -0
- data/app/models/ui_changed/screenshot_ignore_url.rb +15 -0
- data/app/views/layouts/ui_changed/application.html.haml +15 -0
- data/app/views/ui_changed/screenshot_ignore_urls/index.haml +21 -0
- data/app/views/ui_changed/screenshots/_side_nav.haml +32 -0
- data/app/views/ui_changed/screenshots/_top_buttons.haml +36 -0
- data/app/views/ui_changed/screenshots/diff.haml +17 -0
- data/app/views/ui_changed/screenshots/diffs.haml +35 -0
- data/app/views/ui_changed/screenshots/index.haml +31 -0
- data/app/views/ui_changed/screenshots/screenshots.haml +30 -0
- data/app/workers/ui_changed/compare.rb +11 -0
- data/app/workers/ui_changed/crawl_control.rb +11 -0
- data/app/workers/ui_changed/crawl_test.rb +11 -0
- data/app/workers/ui_changed/worker_base.rb +206 -0
- data/config/initializers/load_config.rb +1 -0
- data/config/routes.rb +40 -0
- data/db/migrate/20130203000059_create_ui_changed_screenshots.rb +18 -0
- data/db/migrate/20130203001050_create_ui_changed_screenshot_ignore_urls.rb +9 -0
- data/lib/generators/ui_changed/resque_generator.rb +11 -0
- data/lib/generators/ui_changed/templates/resque.rb +7 -0
- data/lib/tasks/ui_changed_tasks.rake +42 -0
- data/lib/ui_changed/engine.rb +18 -0
- data/lib/ui_changed/railtie.rb +12 -0
- data/lib/ui_changed/version.rb +3 -0
- data/lib/ui_changed.rb +5 -0
- data/spec/dummy/README.rdoc +261 -0
- data/spec/dummy/Rakefile +7 -0
- data/spec/dummy/app/assets/javascripts/application.js +15 -0
- data/spec/dummy/app/assets/stylesheets/application.css +13 -0
- data/spec/dummy/app/controllers/application_controller.rb +3 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/views/layouts/application.html.erb +14 -0
- data/spec/dummy/chromedriver.log +486 -0
- data/spec/dummy/config/application.rb +59 -0
- data/spec/dummy/config/boot.rb +10 -0
- data/spec/dummy/config/database.yml +20 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +37 -0
- data/spec/dummy/config/environments/production.rb +67 -0
- data/spec/dummy/config/environments/test.rb +37 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/inflections.rb +15 -0
- data/spec/dummy/config/initializers/mime_types.rb +5 -0
- data/spec/dummy/config/initializers/secret_token.rb +7 -0
- data/spec/dummy/config/initializers/session_store.rb +8 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy/config/locales/en.yml +5 -0
- data/spec/dummy/config/routes.rb +4 -0
- data/spec/dummy/config/ui_changed.yml +25 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/db/development.sqlite3 +0 -0
- data/spec/dummy/db/schema.rb +37 -0
- data/spec/dummy/log/development.log +28757 -0
- data/spec/dummy/log/test.log +47119 -0
- data/spec/dummy/public/404.html +26 -0
- data/spec/dummy/public/422.html +26 -0
- data/spec/dummy/public/500.html +25 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/script/rails +6 -0
- data/spec/dummy/tmp/cache/assets/C25/650/sprockets%2F2146cc379ac52d93283881b087238840 +0 -0
- data/spec/dummy/tmp/cache/assets/C88/A00/sprockets%2F1576563f31b9463de3b98380b65316ec +0 -0
- data/spec/dummy/tmp/cache/assets/C9B/6B0/sprockets%2F14ad16343013da7f4c5807074f60da43 +0 -0
- data/spec/dummy/tmp/cache/assets/CB1/9B0/sprockets%2F11e63881c7fd93eb64b28b031752f184 +0 -0
- data/spec/dummy/tmp/cache/assets/CB6/C00/sprockets%2Fb3476726ad470583738cd4b345f805fa +0 -0
- data/spec/dummy/tmp/cache/assets/CB7/210/sprockets%2F138a8a31cd8188425abf378b7580856b +0 -0
- data/spec/dummy/tmp/cache/assets/CC0/7C0/sprockets%2Fdb1c954004648bf1999b7ef93c470907 +0 -0
- data/spec/dummy/tmp/cache/assets/CC1/7E0/sprockets%2F552f5b296379701887bf62b61e1eef55 +0 -0
- data/spec/dummy/tmp/cache/assets/CC2/E90/sprockets%2F5ca8fbc29937906ce87a35703a588175 +0 -0
- data/spec/dummy/tmp/cache/assets/CCE/6B0/sprockets%2F3c43115c074131cc27dff45ad1436d39 +0 -0
- data/spec/dummy/tmp/cache/assets/CE1/C50/sprockets%2Fb8c09b0556e29fb12b443f9491758ba1 +0 -0
- data/spec/dummy/tmp/cache/assets/CE2/4F0/sprockets%2F6cf98982c6e31026cd1b25b10d91d955 +0 -0
- data/spec/dummy/tmp/cache/assets/CE2/C60/sprockets%2F05ee6fb6374ce346eb036fa585800159 +0 -0
- data/spec/dummy/tmp/cache/assets/CE4/590/sprockets%2F3f8762728eca1e27313d667a68da61d2 +0 -0
- data/spec/dummy/tmp/cache/assets/CE7/120/sprockets%2F91db081288bd6181c67f7f600d8ac179 +0 -0
- data/spec/dummy/tmp/cache/assets/CE9/6D0/sprockets%2F8eeb2f4e707f4444d25caf8597182412 +0 -0
- data/spec/dummy/tmp/cache/assets/CF1/2F0/sprockets%2F84b5d275d61e77e4c8e971305e71b4d9 +0 -0
- data/spec/dummy/tmp/cache/assets/CF5/010/sprockets%2Ff9d2179a39f51f93bc6f88003845d72f +0 -0
- data/spec/dummy/tmp/cache/assets/D05/6A0/sprockets%2F8d3a80f374b4052fa19d7903c0615dda +0 -0
- data/spec/dummy/tmp/cache/assets/D06/890/sprockets%2F078f78e2e12080050f3bc2eab77b24d8 +0 -0
- data/spec/dummy/tmp/cache/assets/D0E/710/sprockets%2F98ad5b57d4c0b614b15d44e16c20988c +0 -0
- data/spec/dummy/tmp/cache/assets/D18/E30/sprockets%2F373b25f3feb8e02173177a3258fa9f8f +0 -0
- data/spec/dummy/tmp/cache/assets/D1B/200/sprockets%2Feb488fd44186315924274c9fbddf26c1 +0 -0
- data/spec/dummy/tmp/cache/assets/D2B/650/sprockets%2F17e0bd2471845003ab1d326b9df4fb2d +0 -0
- data/spec/dummy/tmp/cache/assets/D33/A80/sprockets%2Fe0e3c435fb1e0437fd54f6118152dbd4 +0 -0
- data/spec/dummy/tmp/cache/assets/D51/3D0/sprockets%2F0b8889dd27a294e91ac45d88f45ab19e +0 -0
- data/spec/dummy/tmp/cache/assets/D52/FC0/sprockets%2Fc7ee307174bd9ce8d84a7a714989de50 +0 -0
- data/spec/dummy/tmp/cache/assets/D57/590/sprockets%2Fa5889cfed7da6867603309e46febf336 +0 -0
- data/spec/dummy/tmp/cache/assets/D62/A70/sprockets%2F9da26ba4665f1bd1946b15f4fb7c00a2 +0 -0
- data/spec/dummy/tmp/cache/assets/D64/280/sprockets%2F41468fda40a48db35907717ec1cae4aa +0 -0
- data/spec/dummy/tmp/cache/assets/D65/BE0/sprockets%2Facc8f0cfb7c0b17255efd15087505b18 +0 -0
- data/spec/dummy/tmp/cache/assets/D6C/9E0/sprockets%2F8168f977dd050ba2afddd02af6139c71 +0 -0
- data/spec/dummy/tmp/cache/assets/D70/3A0/sprockets%2Fe4a9a1e8cb76dfec37b1f404f8519240 +0 -0
- data/spec/dummy/tmp/cache/assets/D74/BE0/sprockets%2Fd7aee2b6e1730859c0e0467f1d7cce93 +0 -0
- data/spec/dummy/tmp/cache/assets/D78/BC0/sprockets%2F207af09f77a5d6abe8dc1e03949835fc +0 -0
- data/spec/dummy/tmp/cache/assets/D84/D90/sprockets%2Fb8af3475f4baf9fd7b6a7c46c7451868 +0 -0
- data/spec/dummy/tmp/cache/assets/D8B/A20/sprockets%2F3ed551887fcdca6e97a755b75f945c6d +0 -0
- data/spec/dummy/tmp/cache/assets/D8E/0D0/sprockets%2F8742e2ef2bd56a3d1d0bb872b3cc217a +0 -0
- data/spec/dummy/tmp/cache/assets/D9F/BC0/sprockets%2F2f95d2d7024aadccb97622d868ec4db2 +0 -0
- data/spec/dummy/tmp/cache/assets/D9F/DC0/sprockets%2F37e94b5bc0f9440b90d05da4e4feee63 +0 -0
- data/spec/dummy/tmp/cache/assets/DB5/B70/sprockets%2F9b6928fa917be6edb53695facf9037db +0 -0
- data/spec/dummy/tmp/cache/assets/DC6/940/sprockets%2Facd26daf8801a48cf5d6b0d441da38d6 +0 -0
- data/spec/dummy/tmp/cache/assets/DED/010/sprockets%2F63ff0e07c5aa4b10d7defd921c0cf41d +0 -0
- data/spec/dummy/tmp/cache/assets/DFB/070/sprockets%2F827a36ec30d2db41fb4174a9c3dfeffe +0 -0
- data/spec/dummy/tmp/cache/assets/DFD/DD0/sprockets%2F20e429deffdda56940cc5c6cab9d73a3 +0 -0
- data/spec/dummy/tmp/cache/assets/E89/3E0/sprockets%2Fea640cb8bbbf5cfa9435ddeebd7b42a8 +0 -0
- data/spec/dummy/tmp/cache/sass/2d87c55fb19cbf8c06f79a1d11d9921f7ccdf621/bootstrap-responsive.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/2d87c55fb19cbf8c06f79a1d11d9921f7ccdf621/bootstrap.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/90f0768cf7e8daaf11afd7e1e4fcba1811609e39/_accordion.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/90f0768cf7e8daaf11afd7e1e4fcba1811609e39/_alerts.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/90f0768cf7e8daaf11afd7e1e4fcba1811609e39/_breadcrumbs.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/90f0768cf7e8daaf11afd7e1e4fcba1811609e39/_button-groups.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/90f0768cf7e8daaf11afd7e1e4fcba1811609e39/_buttons.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/90f0768cf7e8daaf11afd7e1e4fcba1811609e39/_carousel.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/90f0768cf7e8daaf11afd7e1e4fcba1811609e39/_close.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/90f0768cf7e8daaf11afd7e1e4fcba1811609e39/_code.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/90f0768cf7e8daaf11afd7e1e4fcba1811609e39/_component-animations.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/90f0768cf7e8daaf11afd7e1e4fcba1811609e39/_dropdowns.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/90f0768cf7e8daaf11afd7e1e4fcba1811609e39/_forms.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/90f0768cf7e8daaf11afd7e1e4fcba1811609e39/_grid.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/90f0768cf7e8daaf11afd7e1e4fcba1811609e39/_hero-unit.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/90f0768cf7e8daaf11afd7e1e4fcba1811609e39/_labels-badges.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/90f0768cf7e8daaf11afd7e1e4fcba1811609e39/_layouts.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/90f0768cf7e8daaf11afd7e1e4fcba1811609e39/_media.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/90f0768cf7e8daaf11afd7e1e4fcba1811609e39/_mixins.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/90f0768cf7e8daaf11afd7e1e4fcba1811609e39/_modals.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/90f0768cf7e8daaf11afd7e1e4fcba1811609e39/_navbar.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/90f0768cf7e8daaf11afd7e1e4fcba1811609e39/_navs.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/90f0768cf7e8daaf11afd7e1e4fcba1811609e39/_pager.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/90f0768cf7e8daaf11afd7e1e4fcba1811609e39/_pagination.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/90f0768cf7e8daaf11afd7e1e4fcba1811609e39/_popovers.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/90f0768cf7e8daaf11afd7e1e4fcba1811609e39/_progress-bars.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/90f0768cf7e8daaf11afd7e1e4fcba1811609e39/_reset.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/90f0768cf7e8daaf11afd7e1e4fcba1811609e39/_responsive-1200px-min.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/90f0768cf7e8daaf11afd7e1e4fcba1811609e39/_responsive-767px-max.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/90f0768cf7e8daaf11afd7e1e4fcba1811609e39/_responsive-768px-979px.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/90f0768cf7e8daaf11afd7e1e4fcba1811609e39/_responsive-navbar.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/90f0768cf7e8daaf11afd7e1e4fcba1811609e39/_responsive-utilities.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/90f0768cf7e8daaf11afd7e1e4fcba1811609e39/_scaffolding.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/90f0768cf7e8daaf11afd7e1e4fcba1811609e39/_sprites.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/90f0768cf7e8daaf11afd7e1e4fcba1811609e39/_tables.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/90f0768cf7e8daaf11afd7e1e4fcba1811609e39/_thumbnails.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/90f0768cf7e8daaf11afd7e1e4fcba1811609e39/_tooltip.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/90f0768cf7e8daaf11afd7e1e4fcba1811609e39/_type.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/90f0768cf7e8daaf11afd7e1e4fcba1811609e39/_utilities.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/90f0768cf7e8daaf11afd7e1e4fcba1811609e39/_variables.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/90f0768cf7e8daaf11afd7e1e4fcba1811609e39/_wells.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/90f0768cf7e8daaf11afd7e1e4fcba1811609e39/bootstrap.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/90f0768cf7e8daaf11afd7e1e4fcba1811609e39/responsive.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/94c49ca37a72afd14b662ec7a424412bc283c3cf/application.css.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/a83afe1449c73975e2fd619cb5f810eada3c2894/_font-awesome.sassc +0 -0
- data/spec/models/screenshot_actions_spec.rb +126 -0
- data/spec/models/screenshots_ignore_url_spec.rb +24 -0
- data/spec/models/screenshots_spec.rb +144 -0
- data/spec/routing/screenshots_spec.rb +71 -0
- data/spec/spec_helper.rb +66 -0
- data/spec/support/factories/screenshot.rb +14 -0
- data/spec/support/factories/screenshot_ignore_url.rb +5 -0
- data/spec/test_screenshots/control/image_1.png +0 -0
- data/spec/test_screenshots/control/image_1_small.png +0 -0
- data/spec/test_screenshots/control/image_2.png +0 -0
- data/spec/test_screenshots/control/image_2_small.png +0 -0
- data/spec/test_screenshots/control/image_3.png +0 -0
- data/spec/test_screenshots/control/image_3_small.png +0 -0
- data/spec/test_screenshots/control/image_4.png +0 -0
- data/spec/test_screenshots/control/image_4_small.png +0 -0
- data/spec/test_screenshots/control/image_5.png +0 -0
- data/spec/test_screenshots/control/image_5_small.png +0 -0
- data/spec/test_screenshots/test/image_10.png +0 -0
- data/spec/test_screenshots/test/image_10_small.png +0 -0
- data/spec/test_screenshots/test/image_6.png +0 -0
- data/spec/test_screenshots/test/image_6_small.png +0 -0
- data/spec/test_screenshots/test/image_7.png +0 -0
- data/spec/test_screenshots/test/image_7_small.png +0 -0
- data/spec/test_screenshots/test/image_8.png +0 -0
- data/spec/test_screenshots/test/image_8_small.png +0 -0
- data/spec/test_screenshots/test/image_9.png +0 -0
- data/spec/test_screenshots/test/image_9_small.png +0 -0
- metadata +610 -0
@@ -0,0 +1,26 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>The page you were looking for doesn't exist (404)</title>
|
5
|
+
<style type="text/css">
|
6
|
+
body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
|
7
|
+
div.dialog {
|
8
|
+
width: 25em;
|
9
|
+
padding: 0 4em;
|
10
|
+
margin: 4em auto 0 auto;
|
11
|
+
border: 1px solid #ccc;
|
12
|
+
border-right-color: #999;
|
13
|
+
border-bottom-color: #999;
|
14
|
+
}
|
15
|
+
h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
|
16
|
+
</style>
|
17
|
+
</head>
|
18
|
+
|
19
|
+
<body>
|
20
|
+
<!-- This file lives in public/404.html -->
|
21
|
+
<div class="dialog">
|
22
|
+
<h1>The page you were looking for doesn't exist.</h1>
|
23
|
+
<p>You may have mistyped the address or the page may have moved.</p>
|
24
|
+
</div>
|
25
|
+
</body>
|
26
|
+
</html>
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>The change you wanted was rejected (422)</title>
|
5
|
+
<style type="text/css">
|
6
|
+
body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
|
7
|
+
div.dialog {
|
8
|
+
width: 25em;
|
9
|
+
padding: 0 4em;
|
10
|
+
margin: 4em auto 0 auto;
|
11
|
+
border: 1px solid #ccc;
|
12
|
+
border-right-color: #999;
|
13
|
+
border-bottom-color: #999;
|
14
|
+
}
|
15
|
+
h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
|
16
|
+
</style>
|
17
|
+
</head>
|
18
|
+
|
19
|
+
<body>
|
20
|
+
<!-- This file lives in public/422.html -->
|
21
|
+
<div class="dialog">
|
22
|
+
<h1>The change you wanted was rejected.</h1>
|
23
|
+
<p>Maybe you tried to change something you didn't have access to.</p>
|
24
|
+
</div>
|
25
|
+
</body>
|
26
|
+
</html>
|
@@ -0,0 +1,25 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>We're sorry, but something went wrong (500)</title>
|
5
|
+
<style type="text/css">
|
6
|
+
body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
|
7
|
+
div.dialog {
|
8
|
+
width: 25em;
|
9
|
+
padding: 0 4em;
|
10
|
+
margin: 4em auto 0 auto;
|
11
|
+
border: 1px solid #ccc;
|
12
|
+
border-right-color: #999;
|
13
|
+
border-bottom-color: #999;
|
14
|
+
}
|
15
|
+
h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
|
16
|
+
</style>
|
17
|
+
</head>
|
18
|
+
|
19
|
+
<body>
|
20
|
+
<!-- This file lives in public/500.html -->
|
21
|
+
<div class="dialog">
|
22
|
+
<h1>We're sorry, but something went wrong.</h1>
|
23
|
+
</div>
|
24
|
+
</body>
|
25
|
+
</html>
|
File without changes
|
@@ -0,0 +1,6 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
|
3
|
+
|
4
|
+
APP_PATH = File.expand_path('../../config/application', __FILE__)
|
5
|
+
require File.expand_path('../../config/boot', __FILE__)
|
6
|
+
require 'rails/commands'
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/spec/dummy/tmp/cache/sass/2d87c55fb19cbf8c06f79a1d11d9921f7ccdf621/bootstrap-responsive.scssc
ADDED
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/spec/dummy/tmp/cache/sass/90f0768cf7e8daaf11afd7e1e4fcba1811609e39/_component-animations.scssc
ADDED
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/spec/dummy/tmp/cache/sass/90f0768cf7e8daaf11afd7e1e4fcba1811609e39/_responsive-1200px-min.scssc
ADDED
Binary file
|
data/spec/dummy/tmp/cache/sass/90f0768cf7e8daaf11afd7e1e4fcba1811609e39/_responsive-767px-max.scssc
ADDED
Binary file
|
Binary file
|
data/spec/dummy/tmp/cache/sass/90f0768cf7e8daaf11afd7e1e4fcba1811609e39/_responsive-navbar.scssc
ADDED
Binary file
|
data/spec/dummy/tmp/cache/sass/90f0768cf7e8daaf11afd7e1e4fcba1811609e39/_responsive-utilities.scssc
ADDED
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,126 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'debugger'
|
3
|
+
|
4
|
+
describe "screenshot functionality actions" do
|
5
|
+
|
6
|
+
before(:each) {
|
7
|
+
# controls
|
8
|
+
(1..5).each do |i|
|
9
|
+
create_screenshot({:id => i, :is_control => true, :is_test => false})
|
10
|
+
end
|
11
|
+
# tests
|
12
|
+
(6..10).each do |i|
|
13
|
+
create_screenshot({:id => i, :is_control => false, :is_test => true})
|
14
|
+
end
|
15
|
+
|
16
|
+
@testing_control_path = "#{UiChanged::Engine.root}/spec/test_screenshots/control/*"
|
17
|
+
@testing_test_path = "#{UiChanged::Engine.root}/spec/test_screenshots/test/*"
|
18
|
+
@testing_path_map = {"control" => @testing_control_path, "test" => @testing_test_path}
|
19
|
+
|
20
|
+
@dummy_control_path = "#{UiChanged::ConfigHelper.control_path}"
|
21
|
+
@dummy_test_path = "#{UiChanged::ConfigHelper.test_path}"
|
22
|
+
@dummy_compare_path = "#{UiChanged::ConfigHelper.compare_path}"
|
23
|
+
|
24
|
+
# clear out our dummy app screenshot directories
|
25
|
+
UiChanged::WorkerBase.remove_folder_contents_or_create(@dummy_control_path)
|
26
|
+
UiChanged::WorkerBase.remove_folder_contents_or_create(@dummy_test_path)
|
27
|
+
UiChanged::WorkerBase.remove_folder_contents_or_create(@dummy_compare_path)
|
28
|
+
|
29
|
+
# copy our test screenshots into the dummy directories
|
30
|
+
copy_testing_screenshots_into("control", @dummy_control_path)
|
31
|
+
copy_testing_screenshots_into("test", @dummy_test_path)
|
32
|
+
}
|
33
|
+
|
34
|
+
after(:each) {
|
35
|
+
# clear out our dummy app screenshot directories
|
36
|
+
UiChanged::WorkerBase.remove_folder_contents_or_create(@dummy_control_path)
|
37
|
+
UiChanged::WorkerBase.remove_folder_contents_or_create(@dummy_test_path)
|
38
|
+
UiChanged::WorkerBase.remove_folder_contents_or_create(@dummy_compare_path)
|
39
|
+
}
|
40
|
+
|
41
|
+
=begin
|
42
|
+
# this one isn't working - can't figure it out yet
|
43
|
+
it "loads controls with content", :js => true do
|
44
|
+
visit "/ui_changed/screenshots/controls"
|
45
|
+
|
46
|
+
UiChanged::Screenshot.where(:is_control => true).count.should eq(5)
|
47
|
+
|
48
|
+
all(".f_checkall_child").select.first.set(true)
|
49
|
+
all(".f_remove").select.first.click
|
50
|
+
|
51
|
+
UiChanged::Screenshot.where(:is_control => true).count.should eq(4)
|
52
|
+
end
|
53
|
+
=end
|
54
|
+
|
55
|
+
it "should have 5 db control entries" do
|
56
|
+
UiChanged::Screenshot.where(:is_control => true).count.should eq(5)
|
57
|
+
end
|
58
|
+
|
59
|
+
it "should have 5 db test entries" do
|
60
|
+
UiChanged::Screenshot.where(:is_test => true).count.should eq(5)
|
61
|
+
end
|
62
|
+
|
63
|
+
it "should set all tests as controls" do
|
64
|
+
UiChanged::Screenshot.set_all_tests_as_controls
|
65
|
+
UiChanged::Screenshot.find(:all).select{|s| s.is_control != true}.should be_empty
|
66
|
+
|
67
|
+
# there are 2 per screenshot (i.e. image_1.png and image_1_small.png)
|
68
|
+
num_files_in_directory(@dummy_control_path).should eq(10)
|
69
|
+
num_files_in_directory(@dummy_test_path).should eq(0)
|
70
|
+
end
|
71
|
+
|
72
|
+
it "should set specific tests as controls" do
|
73
|
+
UiChanged::Screenshot.set_tests_as_controls([6, 7])
|
74
|
+
|
75
|
+
UiChanged::Screenshot.where("id IN (?)", [6, 7]).select{|s| s.is_control != true}.should be_empty
|
76
|
+
UiChanged::Screenshot.where(:is_control => true).count.should eq(5)
|
77
|
+
UiChanged::Screenshot.where(:is_test => true).count.should eq(3)
|
78
|
+
|
79
|
+
# there are 2 per screenshot (i.e. image_1.png and image_1_small.png)
|
80
|
+
num_files_in_directory(@dummy_control_path).should eq(10)
|
81
|
+
num_files_in_directory(@dummy_test_path).should eq(6)
|
82
|
+
end
|
83
|
+
|
84
|
+
it "should delete all control images and records" do
|
85
|
+
UiChanged::Screenshot.delete_all_controls
|
86
|
+
UiChanged::Screenshot.where(:is_control => true).count.should eq(0)
|
87
|
+
num_files_in_directory(@dummy_control_path).should eq(0)
|
88
|
+
end
|
89
|
+
|
90
|
+
it "should delete all test images and records" do
|
91
|
+
UiChanged::Screenshot.delete_all_tests
|
92
|
+
UiChanged::Screenshot.where(:is_test => true).count.should eq(0)
|
93
|
+
num_files_in_directory(@dummy_test_path).should eq(0)
|
94
|
+
end
|
95
|
+
|
96
|
+
it "should delete specific ids" do
|
97
|
+
# 2 tests & 2 controls
|
98
|
+
UiChanged::Screenshot.destroy_entries_and_images([1, 2, 6, 7])
|
99
|
+
UiChanged::Screenshot.where(:is_control => true).count.should eq(3)
|
100
|
+
UiChanged::Screenshot.where(:is_test => true).count.should eq(3)
|
101
|
+
num_files_in_directory(@dummy_control_path).should eq(6)
|
102
|
+
num_files_in_directory(@dummy_test_path).should eq(6)
|
103
|
+
end
|
104
|
+
|
105
|
+
end
|
106
|
+
|
107
|
+
def create_screenshot(params)
|
108
|
+
FactoryGirl.create(:screenshot,
|
109
|
+
:id => params[:id],
|
110
|
+
:url => "http://www.ui_changed_test.com/test#{params[:id].modulo(5)}",
|
111
|
+
:image_file_name => "image_#{params[:id]}",
|
112
|
+
:is_control => params[:is_control],
|
113
|
+
:is_test => params[:is_test])
|
114
|
+
end
|
115
|
+
|
116
|
+
def copy_testing_screenshots_into(type, dir)
|
117
|
+
# copy our test screenshots into the dummy test directory
|
118
|
+
test_screenshots_path = @testing_path_map[type]
|
119
|
+
puts "copying files in #{@test_screenshots_path} to #{dir}"
|
120
|
+
FileUtils.cp_r Dir.glob(test_screenshots_path), dir
|
121
|
+
end
|
122
|
+
|
123
|
+
def num_files_in_directory(dir)
|
124
|
+
Dir[File.join(dir, '**', '*')].count { |file| File.file?(file) }
|
125
|
+
end
|
126
|
+
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'debugger'
|
3
|
+
|
4
|
+
describe "screenshot ignore url actions" do
|
5
|
+
|
6
|
+
before(:each) { @screenshot_ignore_url = FactoryGirl.build(:screenshot_ignore_url) }
|
7
|
+
|
8
|
+
it "should not allow ignore urls that don't start with http or https" do
|
9
|
+
@screenshot_ignore_url.url = "badurl://www.google.com"
|
10
|
+
@screenshot_ignore_url.should_not be_valid
|
11
|
+
@screenshot_ignore_url.should have(1).error_on(:url)
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should allow ignore urls that start with http" do
|
15
|
+
@screenshot_ignore_url.url = "http://www.google.com"
|
16
|
+
@screenshot_ignore_url.should be_valid
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should allow urls that start with https" do
|
20
|
+
@screenshot_ignore_url.url = "https://www.google.com"
|
21
|
+
@screenshot_ignore_url.should be_valid
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
@@ -0,0 +1,144 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'debugger'
|
3
|
+
|
4
|
+
describe "screenshot actions" do
|
5
|
+
|
6
|
+
# before(:each) { @screenshot = FactoryGirl.create(:screenshot) }
|
7
|
+
|
8
|
+
# url
|
9
|
+
|
10
|
+
it "should not allow urls that don't start with http or https" do
|
11
|
+
screenshot = build(:screenshot, :url => "badurl://www.google.com")
|
12
|
+
screenshot.should_not be_valid
|
13
|
+
screenshot.should have(1).error_on(:url)
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should allow urls that start with http" do
|
17
|
+
screenshot = build(:screenshot, :url => "http://www.google.com")
|
18
|
+
screenshot.should be_valid
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should allow urls that start with https" do
|
22
|
+
screenshot = build(:screenshot, :url => "https://www.google.com")
|
23
|
+
screenshot.should be_valid
|
24
|
+
end
|
25
|
+
|
26
|
+
# types
|
27
|
+
|
28
|
+
it "should not allow all three types" do
|
29
|
+
build(:screenshot,
|
30
|
+
:is_control => true,
|
31
|
+
:is_test => true,
|
32
|
+
:is_compare => true).should_not be_valid
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should not allow zero types" do
|
36
|
+
build(:screenshot,
|
37
|
+
:is_control => false,
|
38
|
+
:is_test => false,
|
39
|
+
:is_compare => false).should_not be_valid
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should only have one type - control" do
|
43
|
+
build(:screenshot,
|
44
|
+
:is_control => true,
|
45
|
+
:is_test => false,
|
46
|
+
:is_compare => false).should be_valid
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should only have one type - test" do
|
50
|
+
build(:screenshot,
|
51
|
+
:is_control => false,
|
52
|
+
:is_test => true,
|
53
|
+
:is_compare => false).should be_valid
|
54
|
+
end
|
55
|
+
|
56
|
+
it "should only have one type - compare" do
|
57
|
+
# we also need to add in the control/test ids for it to validate
|
58
|
+
build(:screenshot,
|
59
|
+
:is_control => false,
|
60
|
+
:is_test => false,
|
61
|
+
:is_compare => true,
|
62
|
+
:control_id => 1,
|
63
|
+
:test_id => 2).should be_valid
|
64
|
+
end
|
65
|
+
|
66
|
+
it "should not validate if is control and diff found" do
|
67
|
+
# we also need to add in the control/test ids for it to validate
|
68
|
+
build(:screenshot,
|
69
|
+
:is_control => true,
|
70
|
+
:is_test => false,
|
71
|
+
:is_compare => false,
|
72
|
+
:diff_found => true,
|
73
|
+
:control_id => 1,
|
74
|
+
:test_id => 2).should_not be_valid
|
75
|
+
end
|
76
|
+
|
77
|
+
it "should not validate if is test and diff found" do
|
78
|
+
build(:screenshot,
|
79
|
+
:is_control => false,
|
80
|
+
:is_test => true,
|
81
|
+
:is_compare => false,
|
82
|
+
:diff_found => true,
|
83
|
+
:control_id => 1,
|
84
|
+
:test_id => 2).should_not be_valid
|
85
|
+
end
|
86
|
+
|
87
|
+
it "should validate if is compare and diff found" do
|
88
|
+
build(:screenshot,
|
89
|
+
:is_control => false,
|
90
|
+
:is_test => false,
|
91
|
+
:is_compare => true,
|
92
|
+
:diff_found => true,
|
93
|
+
:control_id => 1,
|
94
|
+
:test_id => 2).should be_valid
|
95
|
+
end
|
96
|
+
|
97
|
+
# control_id / test_id
|
98
|
+
|
99
|
+
it "should not validate if is compare and control_id and test_id is nil" do
|
100
|
+
build(:screenshot,
|
101
|
+
:is_control => false,
|
102
|
+
:is_test => false,
|
103
|
+
:is_compare => true).should_not be_valid
|
104
|
+
end
|
105
|
+
|
106
|
+
it "should not validate if is compare and test_id is nil" do
|
107
|
+
build(:screenshot,
|
108
|
+
:is_control => false,
|
109
|
+
:is_test => false,
|
110
|
+
:is_compare => true,
|
111
|
+
:control_id => 1).should_not be_valid
|
112
|
+
end
|
113
|
+
|
114
|
+
it "should not validate if is compare and control_id is nil" do
|
115
|
+
screenshot = build(:screenshot,
|
116
|
+
:is_control => false,
|
117
|
+
:is_test => false,
|
118
|
+
:is_compare => true,
|
119
|
+
:test_id => 1).should_not be_valid
|
120
|
+
end
|
121
|
+
|
122
|
+
it "should validate if is compare and control_id and test_id are populated" do
|
123
|
+
screenshot = build(:screenshot,
|
124
|
+
:is_control => false,
|
125
|
+
:is_test => false,
|
126
|
+
:is_compare => true,
|
127
|
+
:control_id => 1,
|
128
|
+
:test_id => 2).should be_valid
|
129
|
+
end
|
130
|
+
|
131
|
+
# image_content_type
|
132
|
+
|
133
|
+
it "should not allow image_content_type of doc" do
|
134
|
+
screenshot = build(:screenshot, :image_content_type => "doc")
|
135
|
+
screenshot.should_not be_valid
|
136
|
+
screenshot.should have(1).error_on(:image_content_type)
|
137
|
+
end
|
138
|
+
|
139
|
+
it "should allow image_content_type of png" do
|
140
|
+
screenshot = build(:screenshot, :image_content_type => "png")
|
141
|
+
screenshot.should be_valid
|
142
|
+
end
|
143
|
+
|
144
|
+
end
|