cuesmash 0.1.9.7 → 0.1.9.8
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 +9 -0
- data/Gemfile.lock +2 -2
- data/cuesmash.gemspec +1 -1
- data/lib/cuesmash/android_app.rb +3 -8
- data/lib/cuesmash/android_appium_text.rb +5 -7
- data/lib/cuesmash/android_command.rb +8 -12
- data/lib/cuesmash/android_compiler.rb +13 -15
- data/lib/cuesmash/app.rb +1 -3
- data/lib/cuesmash/appium_server.rb +5 -7
- data/lib/cuesmash/appium_text.rb +5 -7
- data/lib/cuesmash/command.rb +88 -85
- data/lib/cuesmash/compiler.rb +4 -6
- data/lib/cuesmash/cucumber.rb +15 -21
- data/lib/cuesmash/ios_app.rb +3 -5
- data/lib/cuesmash/ios_compiler.rb +2 -4
- data/lib/cuesmash/plist.rb +8 -10
- data/lib/cuesmash/setup.rb +15 -16
- data/lib/cuesmash/start.rb +68 -63
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 067457f9c6c472d3454a377bf4ac0e5cae11e64f
|
4
|
+
data.tar.gz: 6aacdaf46ff9f6ff7377d62db8807f15afca6863
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6a758e3b2ce774ec53a2b6c83a32bcdd77c11d48622a01827f113d1c8640f2482500fea1972e42b786d25e0cc5df7a5078e6bfc22490080d716ae98020af185c
|
7
|
+
data.tar.gz: 44b6537513e85b2ca66e1c4bc0016b1a417c5fa72808edfa5ba7426cf5ceb0dfe7dedb9054419609ee375c3067c608f3ca2cb9a66690c39c10bd91da6034fee5
|
data/.gitignore
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
cuesmash (0.1.9.
|
4
|
+
cuesmash (0.1.9.8)
|
5
5
|
CFPropertyList (>= 2.2.8)
|
6
6
|
rest-client (~> 1.7.2)
|
7
7
|
thor (>= 0.19.1)
|
@@ -10,7 +10,7 @@ PATH
|
|
10
10
|
GEM
|
11
11
|
remote: https://rubygems.org/
|
12
12
|
specs:
|
13
|
-
CFPropertyList (2.3.
|
13
|
+
CFPropertyList (2.3.1)
|
14
14
|
byebug (3.5.1)
|
15
15
|
columnize (~> 0.8)
|
16
16
|
debugger-linecache (~> 1.2)
|
data/cuesmash.gemspec
CHANGED
@@ -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 = "cuesmash"
|
7
|
-
spec.version = "0.1.9.
|
7
|
+
spec.version = "0.1.9.8"
|
8
8
|
spec.authors = ["Alex Fish", "Jarod McBride", "Tiago Castro"]
|
9
9
|
spec.email = ["fish@ustwo.co.uk", "jarod@ustwo.com", "castro@ustwo.com"]
|
10
10
|
spec.description = "Appium project manager"
|
data/lib/cuesmash/android_app.rb
CHANGED
@@ -2,12 +2,10 @@
|
|
2
2
|
# coding: utf-8
|
3
3
|
|
4
4
|
module Cuesmash
|
5
|
-
|
6
5
|
#
|
7
6
|
# Provides an object to get information about the ios app that is being built.
|
8
7
|
#
|
9
8
|
class AndroidApp < App
|
10
|
-
|
11
9
|
# app/build/outputs/apk/
|
12
10
|
attr_reader :app_dir
|
13
11
|
|
@@ -25,12 +23,9 @@ module Cuesmash
|
|
25
23
|
#
|
26
24
|
# @return [App] A app instance
|
27
25
|
def initialize(project_name:, build_configuration:)
|
28
|
-
@app_name = "#{project_name}-#{build_configuration}" <<
|
29
|
-
|
30
|
-
@app_dir = File.expand_path("./app/build/outputs/apk/")
|
31
|
-
|
26
|
+
@app_name = "#{project_name}-#{build_configuration}" << '.apk'
|
27
|
+
@app_dir = File.expand_path('./app/build/outputs/apk/')
|
32
28
|
@app_path = "#{@app_dir}/" << "#{@app_name}"
|
33
29
|
end
|
34
|
-
|
35
30
|
end # class AndroidApp
|
36
|
-
end # module Cuesmash
|
31
|
+
end # module Cuesmash
|
@@ -2,27 +2,25 @@
|
|
2
2
|
# coding: utf-8
|
3
3
|
|
4
4
|
module Cuesmash
|
5
|
-
|
6
5
|
#
|
7
6
|
# Creates the appium.txt file that is needed by appium
|
8
7
|
#
|
9
8
|
# @author [jarod]
|
10
9
|
#
|
11
10
|
class AndroidAppiumText
|
12
|
-
|
13
11
|
attr_accessor :appium_avd
|
14
12
|
attr_accessor :appium_app
|
15
13
|
attr_accessor :appium_platform_name
|
16
14
|
attr_accessor :appium_new_command_timeout
|
17
15
|
attr_accessor :appium_text_for_file
|
18
16
|
|
19
|
-
#
|
17
|
+
#
|
20
18
|
# [initialize description]
|
21
19
|
# @param platform_name: [type] [description]
|
22
20
|
# @param avd: [type] [description]
|
23
21
|
# @param app: [type] [description]
|
24
22
|
# @param new_command_timeout: 60 [type] [description]
|
25
|
-
#
|
23
|
+
#
|
26
24
|
# @return [type] [description]
|
27
25
|
def initialize(platform_name:, avd:, app:, new_command_timeout: 60)
|
28
26
|
@appium_platform_name = platform_name
|
@@ -40,16 +38,16 @@ module Cuesmash
|
|
40
38
|
private
|
41
39
|
|
42
40
|
def started
|
43
|
-
Logger.info
|
41
|
+
Logger.info 'Updating appium.txt'
|
44
42
|
end
|
45
43
|
|
46
44
|
def update
|
47
45
|
@appium_text_for_file = file_text
|
48
|
-
IO.write(
|
46
|
+
IO.write('features/support/appium.txt', @appium_text_for_file)
|
49
47
|
end
|
50
48
|
|
51
49
|
def completed
|
52
|
-
Logger.info
|
50
|
+
Logger.info 'appium.txt updated 👌'
|
53
51
|
end
|
54
52
|
|
55
53
|
# [caps]
|
@@ -3,7 +3,6 @@
|
|
3
3
|
require 'cuesmash/android_appium_text'
|
4
4
|
|
5
5
|
module Cuesmash
|
6
|
-
|
7
6
|
#
|
8
7
|
# The main point of entry for all commands, Command parses command line arguments
|
9
8
|
# and decides what to do about them.
|
@@ -11,12 +10,11 @@ module Cuesmash
|
|
11
10
|
# @author [alexfish]
|
12
11
|
#
|
13
12
|
class AndroidCommand
|
14
|
-
|
15
13
|
#
|
16
14
|
# Execute a command with some arguments
|
17
15
|
# then figure out what we're supposed to be doing with
|
18
16
|
# the arguments
|
19
|
-
#
|
17
|
+
#
|
20
18
|
# @param avd: [type] [description]
|
21
19
|
# @param server: [type] [description]
|
22
20
|
# @param tags: [type] [description]
|
@@ -27,13 +25,12 @@ module Cuesmash
|
|
27
25
|
# @param profile: [type] [description]
|
28
26
|
# @param quiet: false [type] [description]
|
29
27
|
# @param timeout: [type] [description]
|
30
|
-
#
|
28
|
+
#
|
31
29
|
# @return [type] [description]
|
32
30
|
def self.execute(avd:, server:, tags:, debug: false, format: nil, output: nil, app:, profile:, quiet: false, timeout:)
|
33
|
-
|
34
31
|
if debug
|
35
32
|
Logger.level = ::Logger::DEBUG
|
36
|
-
Logger.formatter = proc do |serverity, time,
|
33
|
+
Logger.formatter = proc do |serverity, time, _progname, msg|
|
37
34
|
"\n#{time}\t#{serverity}\t#{msg.rstrip}"
|
38
35
|
end
|
39
36
|
end
|
@@ -47,10 +44,6 @@ module Cuesmash
|
|
47
44
|
|
48
45
|
# Run the tests
|
49
46
|
run_tests(tags: tags, profile: profile, format: format, output: output, quiet: quiet)
|
50
|
-
|
51
|
-
# Stop the Appium server
|
52
|
-
# app_server.stop_server
|
53
|
-
|
54
47
|
end # execute
|
55
48
|
|
56
49
|
#
|
@@ -78,8 +71,11 @@ module Cuesmash
|
|
78
71
|
# @param app [String] path to built .app file
|
79
72
|
# @param timeout [String] time in seconds to set the newCommandTimeout to.
|
80
73
|
#
|
81
|
-
def self.create_appium_txt(platform_name:
|
82
|
-
appium = Cuesmash::AndroidAppiumText.new(platform_name: platform_name,
|
74
|
+
def self.create_appium_txt(platform_name: 'Android', app:, timeout:, avd:)
|
75
|
+
appium = Cuesmash::AndroidAppiumText.new(platform_name: platform_name,
|
76
|
+
avd: avd,
|
77
|
+
app: app,
|
78
|
+
new_command_timeout: timeout)
|
83
79
|
appium.execute
|
84
80
|
end
|
85
81
|
end # class Command
|
@@ -1,13 +1,11 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
|
3
3
|
module Cuesmash
|
4
|
-
|
5
4
|
#
|
6
5
|
# iOS Specific compiler
|
7
|
-
#
|
6
|
+
#
|
8
7
|
class AndroidCompiler < Compiler
|
9
|
-
|
10
|
-
OUTPUT_PATH = "app/build/outputs/apk"
|
8
|
+
OUTPUT_PATH = 'app/build/outputs/apk'
|
11
9
|
|
12
10
|
attr_accessor :project_name
|
13
11
|
attr_accessor :build_configuration
|
@@ -23,18 +21,18 @@ module Cuesmash
|
|
23
21
|
#
|
24
22
|
# @return [String] The full gradle build command with args
|
25
23
|
def command
|
26
|
-
|
27
24
|
case
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
25
|
+
when @build_configuration == 'debug'
|
26
|
+
gradle_assemble_command = './gradlew assembleDebug'
|
27
|
+
when @build_configuration == 'bdd-debug'
|
28
|
+
gradle_assemble_command = './gradlew assembleBddDebug'
|
29
|
+
when @build_configuration == 'release'
|
30
|
+
gradle_assemble_command = './gradlew assemble'
|
31
|
+
else
|
32
|
+
puts '/nBuild configuration not found or invalid build configuration'
|
34
33
|
end
|
35
|
-
|
36
|
-
|
37
|
-
gradle_command
|
34
|
+
Logger.info "gradle_assemble_command == #{gradle_assemble_command}"
|
35
|
+
gradle_assemble_command
|
38
36
|
end # command
|
39
37
|
end # class AndroidCompiler
|
40
|
-
end # module Cuesmash
|
38
|
+
end # module Cuesmash
|
data/lib/cuesmash/app.rb
CHANGED
@@ -2,12 +2,10 @@
|
|
2
2
|
# coding: utf-8
|
3
3
|
|
4
4
|
module Cuesmash
|
5
|
-
|
6
5
|
#
|
7
6
|
# Provides an object to get information about the ios app that is being built
|
8
7
|
#
|
9
8
|
class App
|
10
|
-
|
11
9
|
# Public: the xcode Derived Data temp directory
|
12
10
|
attr_reader :tmp_dir
|
13
11
|
|
@@ -15,7 +13,7 @@ module Cuesmash
|
|
15
13
|
# Create a new App instance
|
16
14
|
#
|
17
15
|
# @return [App] A app instance
|
18
|
-
def initialize
|
16
|
+
def initialize
|
19
17
|
@tmp_dir = Dir.mktmpdir(file_name)
|
20
18
|
end
|
21
19
|
end
|
@@ -2,14 +2,12 @@
|
|
2
2
|
# coding: utf-8
|
3
3
|
|
4
4
|
module Cuesmash
|
5
|
-
|
6
5
|
#
|
7
6
|
# Provides an interface for starting the appium server
|
8
7
|
#
|
9
8
|
# @author [jarod]
|
10
9
|
#
|
11
10
|
class AppiumServer
|
12
|
-
|
13
11
|
# Public: the output directory for the tests
|
14
12
|
attr_accessor :output
|
15
13
|
|
@@ -19,7 +17,7 @@ module Cuesmash
|
|
19
17
|
#
|
20
18
|
# Create a new instance of AppiumServer
|
21
19
|
#
|
22
|
-
def initialize
|
20
|
+
def initialize
|
23
21
|
end
|
24
22
|
|
25
23
|
#
|
@@ -28,7 +26,7 @@ module Cuesmash
|
|
28
26
|
def start_server
|
29
27
|
started
|
30
28
|
|
31
|
-
command =
|
29
|
+
command = 'appium --log-level debug'
|
32
30
|
|
33
31
|
@stdin, @stdout, @stderr, @wait_thr = Open3.popen3(command)
|
34
32
|
Logger.info "Appium running with pid: #{@wait_thr.pid}"
|
@@ -36,7 +34,7 @@ module Cuesmash
|
|
36
34
|
if Logger.debug?
|
37
35
|
[@stdout, @stderr].each do |stream|
|
38
36
|
Thread.new do
|
39
|
-
until (line = stream.gets).nil?
|
37
|
+
until (line = stream.gets).nil?
|
40
38
|
Logger.debug line
|
41
39
|
end
|
42
40
|
end
|
@@ -62,14 +60,14 @@ module Cuesmash
|
|
62
60
|
# Output a nice message for starting
|
63
61
|
#
|
64
62
|
def started
|
65
|
-
Logger.info
|
63
|
+
Logger.info 'Starting Appium Server'
|
66
64
|
end
|
67
65
|
|
68
66
|
#
|
69
67
|
# Output a nice message for completing
|
70
68
|
#
|
71
69
|
def completed
|
72
|
-
Logger.info
|
70
|
+
Logger.info 'Stopping Appium server 👌'
|
73
71
|
end
|
74
72
|
end
|
75
73
|
end
|
data/lib/cuesmash/appium_text.rb
CHANGED
@@ -2,14 +2,12 @@
|
|
2
2
|
# coding: utf-8
|
3
3
|
|
4
4
|
module Cuesmash
|
5
|
-
|
6
5
|
#
|
7
6
|
# Creates the appium.txt file that is needed by appium
|
8
7
|
#
|
9
8
|
# @author [jarod]
|
10
9
|
#
|
11
10
|
class AppiumText
|
12
|
-
|
13
11
|
attr_accessor :platform_version
|
14
12
|
attr_accessor :app
|
15
13
|
attr_accessor :platform_name
|
@@ -44,28 +42,28 @@ module Cuesmash
|
|
44
42
|
private
|
45
43
|
|
46
44
|
def started
|
47
|
-
Logger.info
|
45
|
+
Logger.info 'Updating appium.txt'
|
48
46
|
end
|
49
47
|
|
50
48
|
def update
|
51
49
|
@appium_text_for_file = file_text
|
52
|
-
IO.write(
|
50
|
+
IO.write('features/support/appium.txt', @appium_text_for_file)
|
53
51
|
end
|
54
52
|
|
55
53
|
def completed
|
56
|
-
Logger.info
|
54
|
+
Logger.info 'appium.txt updated 👌'
|
57
55
|
end
|
58
56
|
|
59
57
|
# [caps]
|
60
58
|
# platformName = "iOS"
|
61
59
|
# deviceName = "iPhone Simulator"
|
62
60
|
# platformVersion = "7.1"
|
63
|
-
# app = "/Users/
|
61
|
+
# app = "/Users/name/Library/Developer/Xcode/DerivedData/proj-xxx/Build/Products/Debug-iphonesimulator/proj.app"
|
64
62
|
def file_text
|
65
63
|
text = "[caps]\n"
|
66
64
|
text << "platformName = \"#{platform_name}\"\n"
|
67
65
|
text << "deviceName = \"#{device_name}\"\n"
|
68
|
-
text << "platformVersion = \"#{platform_version}\"\n" unless platform_version
|
66
|
+
text << "platformVersion = \"#{platform_version}\"\n" unless platform_version.nil?
|
69
67
|
text << "app = \"#{app}\"\n"
|
70
68
|
text << "newCommandTimeout = \"#{new_command_timeout}\"\n"
|
71
69
|
Logger.debug "appium.text == #{text}"
|
data/lib/cuesmash/command.rb
CHANGED
@@ -2,7 +2,6 @@
|
|
2
2
|
# coding: utf-8
|
3
3
|
|
4
4
|
module Cuesmash
|
5
|
-
|
6
5
|
#
|
7
6
|
# The main point of entry for all commands, Command parses command line arguments
|
8
7
|
# and decides what to do about them.
|
@@ -10,98 +9,102 @@ module Cuesmash
|
|
10
9
|
# @author [alexfish]
|
11
10
|
#
|
12
11
|
class Command
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
12
|
+
#
|
13
|
+
# Execute a command with some arguments
|
14
|
+
# then figure out what we're supposed to be doing with
|
15
|
+
# the arguments
|
16
|
+
#
|
17
|
+
# @param device [String]
|
18
|
+
# @param os [String]
|
19
|
+
# @param tags [Array]
|
20
|
+
# @param debug [Boolean]
|
21
|
+
# @param format [String]
|
22
|
+
# @param output [String]
|
23
|
+
# @param app [IosApp Object]
|
24
|
+
# @param profile [String]
|
25
|
+
# @param quiet [String]
|
26
|
+
# @param timeout [String] newCommandTimeout for appium in seconds
|
27
|
+
#
|
28
|
+
# @return [type] [description]
|
29
|
+
def self.execute(device:,
|
30
|
+
os:,
|
31
|
+
tags:,
|
32
|
+
debug: false,
|
33
|
+
format: nil,
|
34
|
+
output: nil,
|
35
|
+
app:,
|
36
|
+
profile:,
|
37
|
+
quiet: false,
|
38
|
+
timeout:)
|
39
|
+
if debug
|
40
|
+
Logger.level = ::Logger::DEBUG
|
41
|
+
Logger.formatter = proc do |serverity, time, _progname, msg|
|
42
|
+
"\n#{time}\t#{serverity}\t#{msg.rstrip}"
|
43
43
|
end
|
44
|
+
end
|
44
45
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
# Update the appium.txt file
|
49
|
-
create_appium_txt(app: app.app_path, device_name: device, platform_version: os, timeout: timeout)
|
46
|
+
# Update the plist
|
47
|
+
# update_plist(scheme, app.app_path)
|
50
48
|
|
51
|
-
|
52
|
-
|
53
|
-
app_server.start_server
|
49
|
+
# Update the appium.txt file
|
50
|
+
create_appium_txt(app: app.app_path, device_name: device, platform_version: os, timeout: timeout)
|
54
51
|
|
55
|
-
|
56
|
-
|
52
|
+
# start the appium server
|
53
|
+
app_server = AppiumServer.new
|
54
|
+
app_server.start_server
|
57
55
|
|
58
|
-
|
59
|
-
|
56
|
+
# Run the tests
|
57
|
+
run_tests(tags: tags, profile: profile, format: format, output: output, quiet: quiet)
|
60
58
|
|
61
|
-
|
59
|
+
# Stop the Appium server
|
60
|
+
# app_server.stop_server
|
61
|
+
end # execute
|
62
62
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
63
|
+
#
|
64
|
+
# Update the applications plist so that the application
|
65
|
+
# connects to sinatra
|
66
|
+
#
|
67
|
+
# @param scheme [String] The scheme related to the application
|
68
|
+
# @param app_path [String] The path to the app
|
69
|
+
#
|
70
|
+
def self.update_plist(scheme, app_path)
|
71
|
+
plist = Cuesmash::Plist.new(scheme, app_path)
|
72
|
+
plist.execute
|
73
|
+
end
|
74
74
|
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
75
|
+
#
|
76
|
+
# Run the cucumber tests, that's why we're here afterall
|
77
|
+
#
|
78
|
+
# @param ios [String] The iOS version to test with
|
79
|
+
# @param tags [Array] The cucumber tags to test with
|
80
|
+
# @param profile [String] cucumber profile to use
|
81
|
+
# @param format [String] The output format for the cucumber tests, Optional
|
82
|
+
# @param output [String] The path to the output directory to output test reports to, Optional
|
83
|
+
# @param quiet [Boolean] quiet flag for cucumber
|
84
|
+
#
|
85
|
+
def self.run_tests(tags:, profile:, format: nil, output: nil, quiet: false)
|
86
|
+
cucumber = Cuesmash::Cucumber.new(tags, profile, quiet)
|
87
|
+
cucumber.format = format if format
|
88
|
+
cucumber.output = output if output
|
89
|
+
cucumber.test
|
90
|
+
end
|
91
91
|
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
92
|
+
#
|
93
|
+
# Update appium.txt file with the directory of the build product
|
94
|
+
#
|
95
|
+
# @param platform_name [String] default 'iOS' name of platform to test on (Android or iOS)
|
96
|
+
# @param device_name [String] deviceName = "iPhone Simulator"
|
97
|
+
# @param platform_version [String] platformVersion = "7.1"
|
98
|
+
# @param app [String] path to built .app file
|
99
|
+
# @param timeout [String] time in seconds to set the newCommandTimeout to.
|
100
|
+
#
|
101
|
+
def self.create_appium_txt(platform_name: 'iOS', device_name:, platform_version:, app:, timeout:)
|
102
|
+
appium = AppiumText.new(platform_name: platform_name,
|
103
|
+
device_name: device_name,
|
104
|
+
platform_version: platform_version,
|
105
|
+
app: app,
|
106
|
+
new_command_timeout: timeout)
|
107
|
+
appium.execute
|
108
|
+
end
|
106
109
|
end # class Command
|
107
110
|
end # module Cuesmash
|
data/lib/cuesmash/compiler.rb
CHANGED
@@ -1,13 +1,11 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
|
3
3
|
module Cuesmash
|
4
|
-
|
5
4
|
#
|
6
5
|
# The calamsash compiler will compiles the Xcode project with the
|
7
6
|
# scheme it's told to compile with.
|
8
7
|
#
|
9
8
|
class Compiler
|
10
|
-
|
11
9
|
# Public: the Scheme the compiler is compiling
|
12
10
|
attr_accessor :scheme
|
13
11
|
attr_accessor :tmp_dir
|
@@ -25,11 +23,11 @@ module Cuesmash
|
|
25
23
|
started
|
26
24
|
status = nil
|
27
25
|
|
28
|
-
Open3.popen3 command do |
|
26
|
+
Open3.popen3 command do |_stdin, out, err, wait_thr|
|
29
27
|
print "\n"
|
30
28
|
[out, err].each do |stream|
|
31
29
|
Thread.new do
|
32
|
-
until (line = stream.gets).nil?
|
30
|
+
until (line = stream.gets).nil?
|
33
31
|
Logger.info line
|
34
32
|
end
|
35
33
|
end
|
@@ -53,14 +51,14 @@ module Cuesmash
|
|
53
51
|
# Output a nice message for starting
|
54
52
|
#
|
55
53
|
def started
|
56
|
-
Logger.info
|
54
|
+
Logger.info 'Compiling'
|
57
55
|
end
|
58
56
|
|
59
57
|
#
|
60
58
|
# Output a nice message for completing
|
61
59
|
#
|
62
60
|
def completed
|
63
|
-
Logger.info
|
61
|
+
Logger.info 'Compiled 👌'
|
64
62
|
end
|
65
63
|
end # class compiler
|
66
64
|
end # module cuesmash
|
data/lib/cuesmash/cucumber.rb
CHANGED
@@ -2,7 +2,6 @@
|
|
2
2
|
# coding: utf-8
|
3
3
|
|
4
4
|
module Cuesmash
|
5
|
-
|
6
5
|
#
|
7
6
|
# Provides a nice interface to cucumber, allowing
|
8
7
|
# us to run the cucumber test suite
|
@@ -10,7 +9,6 @@ module Cuesmash
|
|
10
9
|
# @author [alexfish]
|
11
10
|
#
|
12
11
|
class Cucumber
|
13
|
-
|
14
12
|
# Public: the output directory for the tests
|
15
13
|
attr_accessor :output
|
16
14
|
|
@@ -43,16 +41,13 @@ module Cuesmash
|
|
43
41
|
started
|
44
42
|
|
45
43
|
status = nil
|
46
|
-
output = ""
|
47
|
-
|
48
|
-
cucumber_command = command
|
49
|
-
Logger.debug "cucumber_command == #{cucumber_command}"
|
50
44
|
|
51
|
-
|
45
|
+
Logger.debug "cucumber_command == #{command}"
|
52
46
|
|
47
|
+
Open3.popen3 command do |_stdin, out, err, wait_thr|
|
53
48
|
[out, err].each do |stream|
|
54
49
|
Thread.new do
|
55
|
-
until (line = stream.gets).nil?
|
50
|
+
until (line = stream.gets).nil?
|
56
51
|
Logger.info line
|
57
52
|
end
|
58
53
|
end
|
@@ -63,8 +58,7 @@ module Cuesmash
|
|
63
58
|
end
|
64
59
|
|
65
60
|
if status != 0
|
66
|
-
Logger.info
|
67
|
-
# exit status
|
61
|
+
Logger.info 'Cucumber failed'
|
68
62
|
status
|
69
63
|
else
|
70
64
|
completed
|
@@ -77,14 +71,14 @@ module Cuesmash
|
|
77
71
|
# Output a nice message for starting
|
78
72
|
#
|
79
73
|
def started
|
80
|
-
Logger.info
|
74
|
+
Logger.info 'Running Cucumber'
|
81
75
|
end
|
82
76
|
|
83
77
|
#
|
84
78
|
# Output a nice message for completing
|
85
79
|
#
|
86
80
|
def completed
|
87
|
-
Logger.info
|
81
|
+
Logger.info 'Cucumber Completed 👌'
|
88
82
|
end
|
89
83
|
|
90
84
|
#
|
@@ -93,13 +87,13 @@ module Cuesmash
|
|
93
87
|
#
|
94
88
|
# @return [String] The cucumber command string
|
95
89
|
def command
|
96
|
-
command_string =
|
97
|
-
command_string += " --format #{
|
98
|
-
command_string += " --out #{
|
99
|
-
command_string += " --profile #{
|
100
|
-
command_string += @tags.to_a.empty? ?
|
101
|
-
command_string +=
|
102
|
-
command_string +=
|
90
|
+
command_string = 'cucumber'
|
91
|
+
command_string += " --format #{format}" if format
|
92
|
+
command_string += " --out #{output}" if output
|
93
|
+
command_string += " --profile #{profile}" if profile
|
94
|
+
command_string += @tags.to_a.empty? ? '' : tag_arguments
|
95
|
+
command_string += ' --quiet' if quiet
|
96
|
+
command_string += ' -c'
|
103
97
|
|
104
98
|
Logger.debug "cucumber command == #{command_string}"
|
105
99
|
|
@@ -112,9 +106,9 @@ module Cuesmash
|
|
112
106
|
#
|
113
107
|
# @return [String] The --tags commands ready to go
|
114
108
|
def tag_arguments
|
115
|
-
command_tag =
|
109
|
+
command_tag = ''
|
116
110
|
@tags.each do |tag_set|
|
117
|
-
command_tag =
|
111
|
+
command_tag = '' unless command_tag
|
118
112
|
command_tag += " --tags #{tag_set}"
|
119
113
|
end
|
120
114
|
|
data/lib/cuesmash/ios_app.rb
CHANGED
@@ -4,12 +4,10 @@
|
|
4
4
|
require 'cuesmash/app'
|
5
5
|
|
6
6
|
module Cuesmash
|
7
|
-
|
8
7
|
#
|
9
8
|
# Provides an object to get information about the ios app that is being built.
|
10
9
|
#
|
11
10
|
class IosApp < App
|
12
|
-
|
13
11
|
# Public: the path to the dir containing the built app i.e. /tmp/MyAppQWERQW/Build/Products/Debug-iphonesimulator/
|
14
12
|
attr_reader :app_dir
|
15
13
|
|
@@ -30,13 +28,13 @@ module Cuesmash
|
|
30
28
|
#
|
31
29
|
# @return [App] A app instance
|
32
30
|
def initialize(file_name:, build_configuration:)
|
33
|
-
@app_name = "#{file_name}" <<
|
31
|
+
@app_name = "#{file_name}" << '.app'
|
34
32
|
@tmp_dir = Dir.mktmpdir(file_name)
|
35
33
|
@build_configuration = build_configuration
|
36
34
|
|
37
35
|
@app_dir = "#{@tmp_dir}" << "/#{@build_configuration}-iphonesimulator/"
|
38
|
-
|
36
|
+
|
39
37
|
@app_path = "#{@app_dir}" << "#{@app_name}"
|
40
38
|
end
|
41
39
|
end # class IosApp
|
42
|
-
end # module Cuesmash
|
40
|
+
end # module Cuesmash
|
@@ -1,14 +1,12 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
|
3
3
|
module Cuesmash
|
4
|
-
|
5
4
|
require 'shellwords'
|
6
5
|
|
7
6
|
#
|
8
7
|
# iOS Specific compiler
|
9
8
|
#
|
10
9
|
class IosCompiler < Compiler
|
11
|
-
|
12
10
|
attr_accessor :scheme
|
13
11
|
attr_accessor :tmp_dir
|
14
12
|
attr_accessor :build_configuration
|
@@ -37,13 +35,13 @@ module Cuesmash
|
|
37
35
|
#
|
38
36
|
# @return [String] The name of the workspace file that was found along with the -workspace flag
|
39
37
|
def workspace
|
40
|
-
wp = Dir[
|
38
|
+
wp = Dir['*.xcworkspace'].first
|
41
39
|
if wp
|
42
40
|
flag = "-workspace #{wp}"
|
43
41
|
Logger.debug "workspace == #{wp}"
|
44
42
|
return flag
|
45
43
|
else
|
46
|
-
Logger.debug
|
44
|
+
Logger.debug 'no workspace found'
|
47
45
|
return wp
|
48
46
|
end
|
49
47
|
end # workspace
|
data/lib/cuesmash/plist.rb
CHANGED
@@ -2,7 +2,6 @@
|
|
2
2
|
# coding: utf-8
|
3
3
|
|
4
4
|
module Cuesmash
|
5
|
-
|
6
5
|
#
|
7
6
|
# Does some fun stuff with Xcode plists, cuesmash needs to update
|
8
7
|
# the Xcode projects plist to trick the simulator into connecting
|
@@ -25,7 +24,7 @@ module Cuesmash
|
|
25
24
|
# @param plist_name [String] Default: server_config. The name of the file with the server configurations.
|
26
25
|
#
|
27
26
|
# @return [Plist] A plist instance
|
28
|
-
def initialize(scheme, app_path, plist_name=
|
27
|
+
def initialize(scheme, app_path, plist_name = 'server_config')
|
29
28
|
@scheme = scheme
|
30
29
|
@tmp_dir = tmp_dir
|
31
30
|
@plist_name = plist_name
|
@@ -49,14 +48,14 @@ module Cuesmash
|
|
49
48
|
# Output a nice message for starting
|
50
49
|
#
|
51
50
|
def started
|
52
|
-
Logger.info
|
51
|
+
Logger.info 'Updating plist'
|
53
52
|
end
|
54
53
|
|
55
54
|
#
|
56
55
|
# Output a nice message for completing
|
57
56
|
#
|
58
57
|
def completed
|
59
|
-
Logger.info
|
58
|
+
Logger.info 'Plist updated 👌'
|
60
59
|
end
|
61
60
|
|
62
61
|
#
|
@@ -64,11 +63,11 @@ module Cuesmash
|
|
64
63
|
# with sinatras port and URL
|
65
64
|
#
|
66
65
|
def update
|
67
|
-
plist_file = CFPropertyList::List.new(:
|
66
|
+
plist_file = CFPropertyList::List.new(file: server_plist_path)
|
68
67
|
plist = CFPropertyList.native_types(plist_file.value)
|
69
68
|
|
70
|
-
plist[
|
71
|
-
plist[
|
69
|
+
plist['url_preference'] = server_ip
|
70
|
+
plist['port_preference'] = Cuesmash::PORT
|
72
71
|
|
73
72
|
plist_file.value = CFPropertyList.guess(plist)
|
74
73
|
plist_file.save(server_plist_path, CFPropertyList::List::FORMAT_XML)
|
@@ -78,7 +77,7 @@ module Cuesmash
|
|
78
77
|
# Clear the existing plist from the iOS simulator
|
79
78
|
#
|
80
79
|
def clear
|
81
|
-
FileUtils.rm(simulator_plist_path, :
|
80
|
+
FileUtils.rm(simulator_plist_path, force: true)
|
82
81
|
end
|
83
82
|
|
84
83
|
#
|
@@ -86,7 +85,7 @@ module Cuesmash
|
|
86
85
|
#
|
87
86
|
# @return [String] The mock backends IP
|
88
87
|
def server_ip
|
89
|
-
Socket.ip_address_list.find {|a| a.ipv4? && !a.ipv4_loopback?}.ip_address
|
88
|
+
Socket.ip_address_list.find { |a| a.ipv4? && !a.ipv4_loopback? }.ip_address
|
90
89
|
end
|
91
90
|
|
92
91
|
#
|
@@ -104,6 +103,5 @@ module Cuesmash
|
|
104
103
|
def server_plist_path
|
105
104
|
@app_path + "/#{@plist_name}.plist"
|
106
105
|
end
|
107
|
-
|
108
106
|
end
|
109
107
|
end
|
data/lib/cuesmash/setup.rb
CHANGED
@@ -38,22 +38,22 @@ module Cuesmash
|
|
38
38
|
# come find me and I'll beat you with a ruby hammer.
|
39
39
|
#
|
40
40
|
def install_cucumber
|
41
|
-
command_runner(command:
|
41
|
+
command_runner(command: 'gem install --no-rdoc --no-ri cucumber')
|
42
42
|
end
|
43
43
|
|
44
44
|
# TODO: check if these exist already
|
45
45
|
def create_features_dir
|
46
|
-
command_runner(command:
|
46
|
+
command_runner(command: 'mkdir -p features/{support,step_definitions}')
|
47
47
|
end
|
48
48
|
|
49
49
|
# TODO: check if this file exists already. If so ask if you want to overwrite it.
|
50
50
|
def create_env_rb
|
51
|
-
download_gist(gist_id:
|
51
|
+
download_gist(gist_id: '9fa5e495758463ee5340', final_file: 'features/support/env.rb')
|
52
52
|
end
|
53
53
|
|
54
54
|
# TODO: this is failing.
|
55
55
|
def install_appium_console
|
56
|
-
command_runner(command:
|
56
|
+
command_runner(command: 'gem install --no-rdoc --no-ri appium_console')
|
57
57
|
end
|
58
58
|
|
59
59
|
def install_brew
|
@@ -61,33 +61,33 @@ module Cuesmash
|
|
61
61
|
if brew_path == 0
|
62
62
|
command_runner(command: "ruby -e \"$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)\"")
|
63
63
|
else
|
64
|
-
Logger.info
|
64
|
+
Logger.info 'Brew already installed.'
|
65
65
|
end
|
66
66
|
end
|
67
67
|
|
68
68
|
def install_node
|
69
|
-
command_runner(command:
|
69
|
+
command_runner(command: 'brew update; brew upgrade node; brew install node')
|
70
70
|
end
|
71
71
|
|
72
72
|
def create_travis_yml
|
73
|
-
download_gist(gist_id:
|
73
|
+
download_gist(gist_id: '74cc418331bd81651746', final_file: '.travis.yml')
|
74
74
|
end
|
75
75
|
|
76
76
|
def create_scripts_dir
|
77
|
-
puts
|
78
|
-
command_runner(command:
|
77
|
+
puts 'creating scripts dir'
|
78
|
+
command_runner(command: 'mkdir -p scripts')
|
79
79
|
end
|
80
80
|
|
81
81
|
def create_build_sh
|
82
|
-
download_gist(gist_id:
|
82
|
+
download_gist(gist_id: '8df9762a103c694f5773', final_file: 'scripts/build.sh')
|
83
83
|
end
|
84
84
|
|
85
85
|
def create_gemfile
|
86
|
-
download_gist(gist_id:
|
86
|
+
download_gist(gist_id: 'ea786f1cf0fdbe0febb3', final_file: 'Gemfile')
|
87
87
|
end
|
88
88
|
|
89
89
|
def create_cuesmash_yml
|
90
|
-
download_gist(gist_id:
|
90
|
+
download_gist(gist_id: '146a3b40991e68cb261b', final_file: '.cuesmash.yml')
|
91
91
|
end
|
92
92
|
|
93
93
|
#
|
@@ -98,10 +98,10 @@ module Cuesmash
|
|
98
98
|
def command_runner(command:)
|
99
99
|
status = nil
|
100
100
|
Logger.info "Starting: #{command}"
|
101
|
-
Open3.popen3 command do |
|
101
|
+
Open3.popen3 command do |_stdin, out, err, wait_thr|
|
102
102
|
[out, err].each do |stream|
|
103
103
|
Thread.new do
|
104
|
-
until (line = stream.gets).nil?
|
104
|
+
until (line = stream.gets).nil?
|
105
105
|
Logger.info line
|
106
106
|
end # until
|
107
107
|
end # Thread.new
|
@@ -116,7 +116,6 @@ module Cuesmash
|
|
116
116
|
else
|
117
117
|
Logger.info "Finished: #{command}"
|
118
118
|
end
|
119
|
-
return
|
120
119
|
end # command_runner
|
121
120
|
|
122
121
|
#
|
@@ -125,7 +124,7 @@ module Cuesmash
|
|
125
124
|
# @param final_file: [String] where the final file gets saved in relationship to the directory where the script is run.
|
126
125
|
#
|
127
126
|
def download_gist(gist_id:, final_file:)
|
128
|
-
base_url = URI(
|
127
|
+
base_url = URI('https://api.github.com/gists/')
|
129
128
|
json = JSON.parse(RestClient.get(URI.join(base_url, gist_id).to_s))
|
130
129
|
file_name = json['files'].keys[0]
|
131
130
|
raw_url = json['files'][file_name]['raw_url']
|
data/lib/cuesmash/start.rb
CHANGED
@@ -11,18 +11,16 @@ require 'cuesmash/setup'
|
|
11
11
|
require 'byebug'
|
12
12
|
|
13
13
|
module Cuesmash
|
14
|
-
|
15
14
|
CONFIG_FILE = '.cuesmash.yml'
|
16
15
|
|
17
16
|
# For information on how this class works see the thor documentation https://github.com/erikhuda/thor/wiki
|
18
17
|
class Start < Thor
|
19
|
-
|
20
18
|
desc 'init', 'set up the project'
|
21
19
|
def init
|
22
20
|
Cuesmash::Setup.setup
|
23
21
|
end
|
24
22
|
|
25
|
-
desc
|
23
|
+
desc 'test OPTIONS', 'run the tests'
|
26
24
|
long_desc <<-LONGDESC
|
27
25
|
--tags -t the tags to pass to cucumber, for multiple tags pass one per tag. See cucumber tags for more info. https://github.com/cucumber/cucumber/wiki/Tags\n
|
28
26
|
--output -o The output directory for the test report --not yet implemented--\n
|
@@ -35,16 +33,21 @@ module Cuesmash
|
|
35
33
|
--profile -p which cucumber.yml profile to use\n
|
36
34
|
--quiet -q BOOLEAN cucumber quiet mode
|
37
35
|
LONGDESC
|
38
|
-
method_option :scheme, type: :array, aliases:
|
39
|
-
method_option :app_name, type: :string, aliases:
|
40
|
-
method_option :tags,
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
method_option :
|
36
|
+
method_option :scheme, type: :array, aliases: '-s', desc: 'iOS only: the Xcode scheme to build'
|
37
|
+
method_option :app_name, type: :string, aliases: '-n', desc: 'Android only: the name of the app'
|
38
|
+
method_option :tags,
|
39
|
+
type: :array,
|
40
|
+
aliases: '-t',
|
41
|
+
desc: 'the tags to pass to cucumber, for multiple tags pass one per tag'
|
42
|
+
method_option :debug, type: :boolean, default: false, aliases: '-d', desc: 'turn on debug output'
|
43
|
+
method_option :travis_ci,
|
44
|
+
type: :boolean,
|
45
|
+
default: false,
|
46
|
+
aliases: '-c', desc: 'turn on settings for building on Travis CI'
|
47
|
+
method_option :profile, type: :string, aliases: '-p', desc: 'which cucumber.yml profile to use'
|
48
|
+
method_option :quiet, type: :boolean, aliases: '-q', desc: 'cucumber quiet mode'
|
45
49
|
# method_option :server, type: :string, aliases: "-r", desc: ""
|
46
50
|
def test
|
47
|
-
|
48
51
|
# get the cuesmash.yml config
|
49
52
|
@config = load_config
|
50
53
|
|
@@ -52,25 +55,25 @@ module Cuesmash
|
|
52
55
|
if @config['platform'] == 'iOS'
|
53
56
|
|
54
57
|
# Create new IosApp object
|
55
|
-
@app = IosApp.new(file_name: options[:scheme].join(
|
58
|
+
@app = IosApp.new(file_name: options[:scheme].join(' '), build_configuration: @config['build_configuration'])
|
56
59
|
|
57
60
|
setup_ios
|
58
61
|
|
59
62
|
# enumerate over each device / OS combination and run the tests.
|
60
63
|
@config['devices'].each do |device, oses|
|
61
64
|
oses.each do |os|
|
62
|
-
say
|
65
|
+
say 'Cleaning up iOS Simulator'
|
63
66
|
reset_ios_simulator
|
64
67
|
|
65
68
|
say "\n============================\ntesting iOS #{os} on #{device}", :green
|
66
|
-
Cuesmash::Command.execute(device: device,
|
67
|
-
os: os,
|
68
|
-
server: options[:server],
|
69
|
-
tags: options[:tags],
|
70
|
-
scheme: options[:scheme].join(
|
71
|
-
debug: options[:debug],
|
72
|
-
app: @app,
|
73
|
-
profile: options[:profile],
|
69
|
+
Cuesmash::Command.execute(device: device,
|
70
|
+
os: os,
|
71
|
+
server: options[:server],
|
72
|
+
tags: options[:tags],
|
73
|
+
scheme: options[:scheme].join(' '),
|
74
|
+
debug: options[:debug],
|
75
|
+
app: @app,
|
76
|
+
profile: options[:profile],
|
74
77
|
quiet: options[:quiet],
|
75
78
|
timeout: @config['default']['test_timeout'].to_s)
|
76
79
|
end
|
@@ -79,25 +82,26 @@ module Cuesmash
|
|
79
82
|
# clean up the temp dir
|
80
83
|
Logger.info "Cleaning up tmp dir\n"
|
81
84
|
FileUtils.remove_entry @app.tmp_dir
|
82
|
-
|
85
|
+
|
83
86
|
elsif @config['platform'] == 'Android'
|
84
|
-
|
85
|
-
say "Setting up android", :red
|
86
87
|
|
87
|
-
|
88
|
+
say 'Setting up android', :red
|
89
|
+
|
90
|
+
@app = Cuesmash::AndroidApp.new(project_name: options[:app_name],
|
91
|
+
build_configuration: @config['build_configuration'])
|
88
92
|
setup_android
|
89
93
|
|
90
94
|
# enumerate over each device / OS combination and run the tests.
|
91
95
|
@config['devices']['emulators'].each do |emulator|
|
92
96
|
say "\n============================\ntesting Android on #{emulator}", :green
|
93
|
-
Cuesmash::AndroidCommand.execute(
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
97
|
+
Cuesmash::AndroidCommand.execute(avd: emulator,
|
98
|
+
server: options[:server],
|
99
|
+
tags: options[:tags],
|
100
|
+
debug: options[:debug],
|
101
|
+
app: @app,
|
102
|
+
profile: options[:profile],
|
103
|
+
quiet: options[:quiet],
|
104
|
+
timeout: @config['default']['test_timeout'].to_s)
|
101
105
|
end # device each
|
102
106
|
else
|
103
107
|
say "please set platform: 'iOS' or 'Android' in your .cuesmash.yml file", :red
|
@@ -105,28 +109,27 @@ module Cuesmash
|
|
105
109
|
end
|
106
110
|
end # test
|
107
111
|
|
108
|
-
desc
|
112
|
+
desc 'build OPTIONS', 'compile the app and create appium.txt to use for arc'
|
109
113
|
long_desc <<-LONGDESC
|
110
114
|
--scheme -s iOS: the Xcode scheme to build\n
|
111
115
|
--app_name -n Android: the app name
|
112
116
|
LONGDESC
|
113
|
-
method_option :scheme, type: :array, aliases:
|
114
|
-
method_option :app_name, type: :string, aliases:
|
117
|
+
method_option :scheme, type: :array, aliases: '-s', desc: 'the Xcode scheme to build'
|
118
|
+
method_option :app_name, type: :string, aliases: '-n', desc: 'Android only: the name of the app'
|
115
119
|
def build
|
116
|
-
|
117
120
|
# get the cuesmash.yml config
|
118
121
|
@config = load_config
|
119
122
|
|
120
123
|
# if no default then bail
|
121
|
-
if @config['default']
|
122
|
-
say
|
124
|
+
if @config['default'].nil?
|
125
|
+
say 'add a default device and os version to the .cuesmash.yml', :red
|
123
126
|
return
|
124
127
|
end
|
125
128
|
|
126
129
|
if @config['platform'] == 'iOS'
|
127
130
|
setup_ios
|
128
131
|
elsif @config['platform'] == 'Android'
|
129
|
-
say
|
132
|
+
say 'Setting up android'
|
130
133
|
setup_android
|
131
134
|
else
|
132
135
|
say "please set platform: 'iOS' or 'Android' in your .cuesmash.yml file", :red
|
@@ -142,9 +145,8 @@ module Cuesmash
|
|
142
145
|
#
|
143
146
|
# @return [YAML] yaml loaded from the config_file
|
144
147
|
def load_config
|
145
|
-
|
146
|
-
|
147
|
-
config = YAML.load_file(CONFIG_FILE) if File.exists?(CONFIG_FILE)
|
148
|
+
if File.exist?(CONFIG_FILE)
|
149
|
+
config = YAML.load_file(CONFIG_FILE) if File.exist?(CONFIG_FILE)
|
148
150
|
else
|
149
151
|
say "There is no '.cuesmash.yml' file. Please create one and try again.\n", :red
|
150
152
|
return
|
@@ -154,25 +156,29 @@ module Cuesmash
|
|
154
156
|
|
155
157
|
#
|
156
158
|
# helper methods
|
157
|
-
#
|
159
|
+
#
|
158
160
|
def setup_ios
|
159
|
-
@app = IosApp.new(file_name: options[:scheme].join(
|
161
|
+
@app = IosApp.new(file_name: options[:scheme].join(' '), build_configuration: @config['build_configuration'])
|
160
162
|
|
161
163
|
# Compile the project
|
162
|
-
compiler = Cuesmash::IosCompiler.new(scheme: options[:scheme].join(
|
164
|
+
compiler = Cuesmash::IosCompiler.new(scheme: options[:scheme].join(' '),
|
165
|
+
tmp_dir: @app.tmp_dir,
|
166
|
+
build_configuration: @config['build_configuration'])
|
163
167
|
compiler.compile
|
164
168
|
|
165
169
|
ios_appium_text
|
166
170
|
end
|
167
171
|
|
168
|
-
#
|
172
|
+
#
|
169
173
|
# helper method for setting up android build
|
170
|
-
#
|
174
|
+
#
|
171
175
|
def setup_android
|
172
|
-
@app = Cuesmash::AndroidApp.new(project_name: options[:app_name],
|
176
|
+
@app = Cuesmash::AndroidApp.new(project_name: options[:app_name],
|
177
|
+
build_configuration: @config['build_configuration'])
|
173
178
|
|
174
179
|
# Compile the project
|
175
|
-
compiler = Cuesmash::AndroidCompiler.new(project_name: options[:app_name],
|
180
|
+
compiler = Cuesmash::AndroidCompiler.new(project_name: options[:app_name],
|
181
|
+
build_configuration: @config['build_configuration'])
|
176
182
|
compiler.compile
|
177
183
|
|
178
184
|
android_appium_text
|
@@ -180,33 +186,32 @@ module Cuesmash
|
|
180
186
|
|
181
187
|
#
|
182
188
|
# iOS Appium text file set up
|
183
|
-
#
|
189
|
+
#
|
184
190
|
def ios_appium_text
|
185
|
-
appium = Cuesmash::AppiumText.new(platform_name:
|
186
|
-
device_name: @config['default']['os'],
|
187
|
-
platform_version: @config['default']['version'].to_s,
|
188
|
-
app: @app.app_path,
|
191
|
+
appium = Cuesmash::AppiumText.new(platform_name: 'iOS',
|
192
|
+
device_name: @config['default']['os'],
|
193
|
+
platform_version: @config['default']['version'].to_s,
|
194
|
+
app: @app.app_path,
|
189
195
|
new_command_timeout: @config['default']['test_timeout'].to_s)
|
190
196
|
appium.execute
|
191
197
|
end
|
192
198
|
|
193
199
|
#
|
194
200
|
# Android Appium text file set up
|
195
|
-
#
|
201
|
+
#
|
196
202
|
def android_appium_text
|
197
|
-
appium = Cuesmash::AndroidAppiumText.new(
|
198
|
-
|
199
|
-
|
200
|
-
|
203
|
+
appium = Cuesmash::AndroidAppiumText.new(platform_name: @config['platform'],
|
204
|
+
avd: @config['default_emulator'],
|
205
|
+
app: @app.app_path,
|
206
|
+
new_command_timeout: @config['default']['test_timeout'].to_s)
|
201
207
|
appium.execute
|
202
208
|
end # android_appium_text
|
203
209
|
|
204
|
-
#
|
210
|
+
#
|
205
211
|
# Removes the settings and contents for the iOS simulator.
|
206
|
-
#
|
212
|
+
#
|
207
213
|
# @return [type] [description]
|
208
214
|
def reset_ios_simulator
|
209
|
-
|
210
215
|
end
|
211
216
|
end # no_commands
|
212
217
|
end # Start class
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cuesmash
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.9.
|
4
|
+
version: 0.1.9.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Fish
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2015-
|
13
|
+
date: 2015-04-17 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: bundler
|
@@ -232,7 +232,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
232
232
|
version: '0'
|
233
233
|
requirements: []
|
234
234
|
rubyforge_project:
|
235
|
-
rubygems_version: 2.
|
235
|
+
rubygems_version: 2.4.3
|
236
236
|
signing_key:
|
237
237
|
specification_version: 4
|
238
238
|
summary: Compile an app and run cucumber with appium
|