true_automation 0.3.4 → 0.3.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ad9533605c7a55ad8e9528f286a5968967617ecc
4
- data.tar.gz: f1f1ee18fdc71fbe0d3e69f46e0e71f67621b1f2
3
+ metadata.gz: 3355f74c9a473cd7b9b70072486452f12ed52ca1
4
+ data.tar.gz: c3c07946636cc8afc43ff29170a07bf8a8ef1813
5
5
  SHA512:
6
- metadata.gz: 82bf853bbeb06701deecb8aad1bf6179741d28e473c8a0bcb24582a587d08355a8f16c79a4aecea9bf3fdac63ae898f676e0f75f5f3e0d03b63fcc83497b389d
7
- data.tar.gz: '02258e95a4cdcf96c3df1a2cbb65019b51b1719fe8fd04c5e0b0ea805bc11d1607cc7b944a9a399d122a6485a602f7adcca1455f68872e02462047ae3e98a544'
6
+ metadata.gz: 87a85bc1280d4d0c812a8508f52b156c0f6c626a36e52c9eec9cc97dd32ffbe74e9a25a29150a60ba097ee7ef4ed90e042f94d8ff97f6c58f2e192510b3e0999
7
+ data.tar.gz: 96ca25ec16a59b3736ecf92c81e69b9ce20dd10f3393abd539fbba66698bc9ba167208743a3f78eeee5db01208b73b082b25842be067b662e461180e38519679
data/README.md CHANGED
@@ -7,13 +7,17 @@
7
7
  **true_automation** gem provides helper DSL method, that can be used instead of Selenium/Capybara locators.
8
8
  Initial setup aim is to make `ta` method visible for your code.
9
9
 
10
- You need **trueautomation** npm package installed globally first. It requires NodeJS 9+.
11
- We recommend to use [nvm](https://github.com/creationix/nvm) or [nvm-windows](https://github.com/coreybutler/nvm-windows)
12
- to install Node.
10
+ You need TrueAutomation.IO client installed first.
13
11
 
14
- When right version of Node is installed run the following command:
12
+ To install it just run the following command in your terminal. Using cURL:
15
13
 
16
- $ npm install -g trueautomation
14
+ curl -o- http://trueautomation.io/installer.sh | bash
15
+
16
+ Or using wget
17
+
18
+ wget -qO- http://trueautomation.io/installer.sh | bash
19
+
20
+ Then restart your terminal to start using TrueAutomation.IO
17
21
 
18
22
 
19
23
  ### Automatic Setup
@@ -23,8 +27,8 @@ in your project. Currently we support Capybara/RSpec automatic setup only.
23
27
 
24
28
  #### Capybara/RSpec
25
29
 
26
- For Capybara/RSpec projects TrueAutomation installer adds **true_automation** gem to the Gemfile, and includes TrueAutomation
27
- DSL to `rspec_helper.rb`.
30
+ For Capybara/RSpec projects TrueAutomation installer adds **true_automation** gem to the Gemfile, includes TrueAutomation
31
+ DSL to `rspec_helper.rb` and replaces WebDriver with TrueAutomaton.IO Driver
28
32
 
29
33
  #### Other
30
34
 
@@ -43,6 +47,48 @@ And then execute:
43
47
 
44
48
  $ bundle install
45
49
 
50
+ #### Using TrueAutomaton.IO Capybara WebDriver
51
+
52
+ ```ruby
53
+ require 'true_automation/driver/capybara'
54
+ ```
55
+
56
+ To initialize WebDriver for Capybara
57
+ ```ruby
58
+ TrueAutomation::Driver::Capybara.new(app, port: 9515)
59
+ ```
60
+
61
+ #### Controlling TrueAutomation.IO Driver lifecycle
62
+
63
+ ```ruby
64
+ require 'true_automation/client'
65
+ ```
66
+
67
+ Initialize the client
68
+
69
+ ```ruby
70
+ ta_client = TrueAutomation::Client.new
71
+ ```
72
+
73
+ Start the client:
74
+ ```ruby
75
+ ta_client.start(port: 9515)
76
+ ```
77
+
78
+ Wait until client is started:
79
+ ```ruby
80
+ ta_client.wait_until_start
81
+ ```
82
+
83
+ Stop the client:
84
+ ```ruby
85
+ ta_client.stop
86
+ ```
87
+
88
+ Client automatically writes the log in `./log/trueautomation-<date-time>.log`
89
+
90
+ #### Using TrueAutomation.IO locators
91
+
46
92
  Add TrueAutomation DSL to your test file
47
93
 
48
94
  ```ruby
@@ -1,42 +1,28 @@
1
1
  require 'open3'
2
2
  require 'json'
3
+ require 'mkmf'
3
4
 
4
5
  module TrueAutomation
5
6
  class Client
6
7
  @pid = nil
7
8
 
8
- def start
9
- begin
10
- node_ver = `node -v`
11
- node_ver = node_ver[1..-1]
12
- node_versions = node_ver.split('.')
13
- major_version = node_versions[0]
9
+ def start(options)
14
10
 
15
- if major_version.to_i < 9
16
- puts "Node version #{node_ver} found. TrueAutomation.IO requires Node 9+ to run."
17
- exit
18
- end
19
- rescue e
20
- puts 'Node executable can not be found. node version 9+ is required to run TrueAutomation.IO tests.'
21
- exit
22
- end
23
-
24
- begin
25
- trueautomation_version = `trueautomation --version`
11
+ @port = options[:port] || 9515
12
+ @executable = ENV['TRUEAUTOMATION_EXEC'] || 'trueautomation'
26
13
 
27
- puts "TrueAutomation.IO client #{trueautomation_version.strip}"
28
- rescue e
29
- puts 'TrueAutomation.IO npm package is not installed. Run `npm install -g trueautomation` to install it first.'
30
- exit
14
+ if find_executable(@executable).nil?
15
+ raise "`#{@executable}` not found. Can not find TrueAutomation.IO client"
31
16
  end
32
17
 
33
- Dir.mkdir('log') unless File.exist?('log')
18
+ trueautomation_version = `#{@executable} --version`
19
+ puts "TrueAutomation.IO client #{trueautomation_version.strip}"
34
20
 
21
+ Dir.mkdir('log') unless File.exist?('log')
35
22
  logfile = "log/trueautomation-#{Time.now.strftime('%Y%m%dT%H%M%S')}.log"
36
23
 
37
- @pid = spawn('trueautomation start', out: logfile)
38
-
39
- puts "Started TrueAutomation.IO client with pid #{@pid}"
24
+ @pid = spawn("#{@executable} --log-file #{logfile} --port #{@port}")
25
+ puts "Started TrueAutomation.IO client with pid #{@pid} listening to port #{@port}"
40
26
 
41
27
  @pid
42
28
  end
@@ -61,7 +47,7 @@ module TrueAutomation
61
47
  private
62
48
 
63
49
  def check_connection
64
- Socket.tcp('localhost', 9515, connect_timeout: 2) { true } rescue false
50
+ Socket.tcp('localhost', @port, connect_timeout: 2) { true } rescue false
65
51
  end
66
52
  end
67
53
  end
@@ -4,20 +4,22 @@ module TrueAutomation
4
4
  module Driver
5
5
  class Capybara < Capybara::Selenium::Driver
6
6
  def initialize(app, **options)
7
+ @port = options.delete(:port) || 9515
8
+
7
9
  super(app, options)
8
10
 
9
11
  @ta_client = TrueAutomation::Client.new
10
12
 
11
- @options.merge!({browser: :remote,
12
- url: 'http://localhost:9515/',
13
+ @options.merge!(browser: :remote,
14
+ url: "http://localhost:#{@port}/",
13
15
  desired_capabilities: {
14
16
  browser: :chrome
15
- }})
17
+ })
16
18
  end
17
19
 
18
20
  def browser
19
21
  unless @browser
20
- @ta_client.start
22
+ @ta_client.start(port: @port)
21
23
 
22
24
  @ta_client.wait_until_start
23
25
 
@@ -1,3 +1,3 @@
1
1
  module TrueAutomation
2
- VERSION = '0.3.4'
2
+ VERSION = '0.3.5'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: true_automation
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.4
4
+ version: 0.3.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - TrueAutomation.IO
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-03-19 00:00:00.000000000 Z
11
+ date: 2018-03-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler