watir_angular 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4e019786d3a45abfef1cd132d84311e9e19ebe7f
4
- data.tar.gz: c19d55702a8681c2fa17dc8ae24828424a734932
3
+ metadata.gz: 92861e78110e040eac6d0d6cc163a51a39b246ff
4
+ data.tar.gz: 42f962e3e5e58a6b399ceaf8b7a5dfcf88a10924
5
5
  SHA512:
6
- metadata.gz: 6e3578f7a70423f0286df7d0bf0459acf49f7025996a8a22322571a8a68576ad9169585775a12a64afad11735b3b349b21dee8de6b20c71ce83d99c8e68c7fe7
7
- data.tar.gz: e50bda2128b5bc1980a58042e078e23bd313bee521b747a0cbdb7cf7a6570ec07b757078b1f1d1085cbba55b9590daa4350abf2762f7ab24548cbfe8ad222b22
6
+ metadata.gz: 5b9c5ddf6de13251fcc8a4f8b098e5c161f6fd1e9f428da08f9cf916232d2250d48429f1386380537d72fa55654579e2b2243f32fc5e3eb2c69ad45de08efc7f
7
+ data.tar.gz: e3fe8f2eb14adf70b99db6eeaeb404a9db47f95d7fa1dbb6f77533344b8ff66885b3e2dbf66f0d4ea94f23c8146b40ab513d93f03eb2960fba858d2fb20886bb
data/README.md CHANGED
@@ -28,10 +28,23 @@ Or install it yourself as:
28
28
 
29
29
  ## Usage
30
30
 
31
+ To have access to all `ng-*` locators and methods, simply require the gem
31
32
  ```ruby
32
33
  require "watir_angular"
33
34
  ```
34
35
 
36
+ To explicitly specify a wait for angular executions to complete
37
+ ```ruby
38
+ browser = Watir::Browser.new
39
+ WatirAngular.wait_for_angular(browser)
40
+ ```
41
+
42
+ To automatically wait for angular executions to complete after each method
43
+ ```ruby
44
+ browser = Watir::Browser.new
45
+ WatirAngular.inject_angular_wait(browser)
46
+ ```
47
+
35
48
  ## Contributing
36
49
 
37
50
  Bug reports and pull requests are welcome on GitHub at https://github.com/titusfortner/watir_angular.
@@ -1,15 +1,18 @@
1
- # Code on Page is based on code by westlm1@NW110283.nwie.net
1
+ # Code on this page is based on code by westlm1@NW110283.nwie.net
2
2
  # From https://github.com/watir/watir/pull/387
3
3
 
4
4
  require "watir"
5
- require 'watir_angular/locators/element/selector_builder'
5
+
6
+ Watir::Locators::Element::SelectorBuilder.send(:remove_const, :WILDCARD_ATTRIBUTE)
7
+ Watir::Locators::Element::SelectorBuilder::WILDCARD_ATTRIBUTE = /^(aria|data|ng)_(.+)$/
6
8
 
7
9
  module WatirAngular
8
- def wait_for_angular(timeout: Watir.default_timeout)
10
+ def self.wait_for_angular(browser, timeout: Watir.default_timeout)
11
+ wd = browser.wd
9
12
  angular_element = "document.querySelectorAll('[ng-app]')[0]"
10
13
  wd.execute_script("angular.element(#{angular_element}).scope().pageFinishedRendering = false")
11
14
  wd.execute_script("angular.getTestability(#{angular_element}).whenStable(function(){angular.element(#{angular_element}).scope().pageFinishedRendering = true})")
12
- wait_until(timeout: timeout, message: "waiting for angular to render") do
15
+ browser.wait_until(timeout: timeout, message: "waiting for angular to render") do
13
16
  wd.execute_script("return angular.element(#{angular_element}).scope().pageFinishedRendering")
14
17
  end
15
18
  rescue Selenium::WebDriver::Error::InvalidElementStateError
@@ -21,20 +24,8 @@ module WatirAngular
21
24
  raise unless ex.message.include? "angular is not defined"
22
25
  # angular not used in the application, continue as normal
23
26
  end
24
- end
25
-
26
- require 'extensions/watir/browser'
27
- Watir.locator_namespace = WatirAngular::Locators
28
-
29
- WatirAngular::Locators::Element::Locator = Watir::Locators::Element::Locator
30
- WatirAngular::Locators::Element::Validator = Watir::Locators::Element::Validator
31
-
32
- # Behaviors for element subclasses to come from Watir rather than WatirAngular superclass element
33
- WatirAngular::Locators::Button::Locator = Watir::Locators::Button::Locator
34
- WatirAngular::Locators::Button::Validator = Watir::Locators::Button::Validator
35
- WatirAngular::Locators::Cell::Locator = Watir::Locators::Cell::Locator
36
- WatirAngular::Locators::Row::Locator = Watir::Locators::Row::Locator
37
- WatirAngular::Locators::TextArea::Locator = Watir::Locators::TextArea::Locator
38
- WatirAngular::Locators::TextField::Locator = Watir::Locators::TextField::Locator
39
- WatirAngular::Locators::TextField::Validator = Watir::Locators::TextField::Validator
40
27
 
28
+ def self.inject_wait(browser)
29
+ browser.after_hooks.add ->(browser) { wait_for_angular(browser) }
30
+ end
31
+ end
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "watir_angular"
7
- spec.version = "0.2.0"
7
+ spec.version = "0.3.0"
8
8
  spec.authors = ["Titus Fortner"]
9
9
  spec.email = ["titusfortner@gmail.com"]
10
10
 
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
20
20
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
21
  spec.require_paths = ["lib"]
22
22
 
23
- spec.add_runtime_dependency "watir", "~> 6.8", ">= 6.8.2"
23
+ spec.add_runtime_dependency "watir", "~> 6.9"
24
24
 
25
25
  spec.add_development_dependency "bundler", "~> 1.15"
26
26
  spec.add_development_dependency "rake", "~> 10.0"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: watir_angular
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Titus Fortner
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-09-06 00:00:00.000000000 Z
11
+ date: 2017-11-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: watir
@@ -16,20 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '6.8'
20
- - - ">="
21
- - !ruby/object:Gem::Version
22
- version: 6.8.2
19
+ version: '6.9'
23
20
  type: :runtime
24
21
  prerelease: false
25
22
  version_requirements: !ruby/object:Gem::Requirement
26
23
  requirements:
27
24
  - - "~>"
28
25
  - !ruby/object:Gem::Version
29
- version: '6.8'
30
- - - ">="
31
- - !ruby/object:Gem::Version
32
- version: 6.8.2
26
+ version: '6.9'
33
27
  - !ruby/object:Gem::Dependency
34
28
  name: bundler
35
29
  requirement: !ruby/object:Gem::Requirement
@@ -101,10 +95,7 @@ files:
101
95
  - LICENSE.txt
102
96
  - README.md
103
97
  - Rakefile
104
- - lib/extensions/watir/browser.rb
105
98
  - lib/watir_angular.rb
106
- - lib/watir_angular/locators/element/selector_builder.rb
107
- - support/travis.sh
108
99
  - watir_angular.gemspec
109
100
  homepage: http://github.com/titusfortner/watir_angular
110
101
  licenses:
@@ -1,16 +0,0 @@
1
- module Watir
2
-
3
- class Browser
4
- include WatirAngular
5
-
6
- # TODO - reimplement with Watir Executor when available
7
-
8
- alias_method :watir_initialize, :initialize
9
-
10
- def initialize(*args)
11
- watir_initialize(*args)
12
- proc = ->(browser) { browser.wait_for_angular }
13
- @after_hooks.add(proc)
14
- end
15
- end # Browser
16
- end # Watir
@@ -1,61 +0,0 @@
1
- module WatirAngular
2
- module Locators
3
-
4
- module SelectorHelpers
5
- def assert_valid_as_attribute(attribute)
6
- return if ng_attribute?(attribute)
7
- super
8
- end
9
-
10
- def ng_attribute?(attribute)
11
- ng_attributes.include? attribute[/^ng_(.+)$/, 1]
12
- end
13
-
14
- def ng_attributes
15
- %w[app bind bind_html bind_template blur change checked class
16
- class_even class_odd click cloak controller copy csp cut dblclick disabled focus
17
- form hide href if include init jq keydown keypress keyup list maxlength
18
- minlength model model_options mousedown mouseenter mouseleave mousemove mouseover
19
- mouseup non_bindable open options paste pluralize readonly repeat required selected
20
- show src srcset style submit switch transclude value]
21
- end
22
- end
23
-
24
- class Element
25
- class SelectorBuilder < Watir::Locators::Element::SelectorBuilder
26
- include SelectorHelpers
27
- end
28
- end
29
-
30
- class Button
31
- class SelectorBuilder < Watir::Locators::Button::SelectorBuilder
32
- include SelectorHelpers
33
- end
34
- end
35
-
36
- class Cell
37
- class SelectorBuilder < Watir::Locators::Cell::SelectorBuilder
38
- include SelectorHelpers
39
- end
40
- end
41
-
42
- class Row
43
- class SelectorBuilder < Watir::Locators::Row::SelectorBuilder
44
- include SelectorHelpers
45
- end
46
- end
47
-
48
- class TextArea
49
- class SelectorBuilder < Watir::Locators::TextArea::SelectorBuilder
50
- include SelectorHelpers
51
- end
52
- end
53
-
54
- class TextField
55
- class SelectorBuilder < Watir::Locators::TextField::SelectorBuilder
56
- include SelectorHelpers
57
- end
58
- end
59
-
60
- end
61
- end
@@ -1,6 +0,0 @@
1
- #!/bin/bash
2
-
3
- set -e
4
- set -x
5
-
6
- sh -e /etc/init.d/xvfb start