skeleton-ui 0.1.11 → 0.1.12

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
  SHA256:
3
- metadata.gz: 129ebeb0d1f8014b655ec386cc47546974bceb1b3d7117e51b94ce08235045ff
4
- data.tar.gz: a3ec2f542d04712de55bd079dfa96770817c96aac239951ea2fe58a55bfe9cc7
3
+ metadata.gz: 070fce0dd13ee0154db462655d7f86b119ed77e75c0f0810de14ca407802643d
4
+ data.tar.gz: 937d99a22bed5cca8fcda3346f06cdd93dfcf0b81c10f32666a9f54f32ae960d
5
5
  SHA512:
6
- metadata.gz: af6e514ead6d99c5636eaf54bce53d8288279d6f7b0a68674ae613b226b87077631a9bcca36dbfda676a0516782cf338a56b10ccad03364f55d97a2187af6084
7
- data.tar.gz: d7aa3d27c079ea9e084e16e10ebe8f7abb10c9adc4619649c8bdb32f02e0e55d87aab665bf0aa9c0de98a36023f5a18f4798e06bf58cf94c18d8c86e97d18eb8
6
+ metadata.gz: 48a760cd677ff3c90110d490a9984f67f10c2bca83c2b8860384c4c9a33c300ad7c500ac8e45bae6e569eaaf814bca06f4c960c88f7e0fa43fa1ebc157233459
7
+ data.tar.gz: 0dcf69c1ee743eea168c6223537304823ea2f9502d6e30f6e9c20be851edbd9c042ab15a081c1c1bdbce8f00f67de54f08b75d1e53cc2ed33ad4ec7c26d100bf
data/lib/skeleton.rb CHANGED
@@ -39,7 +39,9 @@ module Skeleton
39
39
 
40
40
  def fill_html
41
41
  language = Language.new
42
- %w[ruby java python javascript].each do |lang|
42
+ languages = %w[ruby java python javascript]
43
+ languages += %w[swift] if ios?
44
+ languages.each do |lang|
43
45
  attach_image
44
46
  type = language.type(lang)
45
47
  folder = Base::PAGE_OBJECTS_FOLDER
data/lib/skeleton/base.rb CHANGED
@@ -5,7 +5,6 @@ class Base
5
5
 
6
6
  def precondition
7
7
  clear
8
- FileUtils.rm_rf("#{ROOT_DIR}/server/screenshot.png")
9
8
  FileUtils.mkdir_p(PAGE_OBJECTS_FOLDER)
10
9
  FileUtils.mkdir_p(ATTACHMENTS_FOLDER)
11
10
  rescue
@@ -21,6 +20,7 @@ class Base
21
20
  def clear
22
21
  FileUtils.rm_rf(PAGE_OBJECTS_FOLDER)
23
22
  FileUtils.rm_rf(ATTACHMENTS_FOLDER)
23
+ FileUtils.rm_rf("#{ROOT_DIR}/server/screenshot.png")
24
24
  end
25
25
 
26
26
  protected
data/lib/skeleton/ios.rb CHANGED
@@ -49,27 +49,30 @@ class IOS < Base
49
49
  def create_locator(line)
50
50
  locator_by_id = locator_by_id(line)
51
51
  locator_by_label = locator_by_label(line)
52
+ type = element_type(line)
52
53
  if !locator_by_id.empty?
53
- create_locator_by_id(locator_by_id)
54
+ create_locator_by_id(locator_by_id, type)
54
55
  elsif !locator_by_label.empty?
55
- type = element_type(line)
56
56
  create_locator_by_label(locator_by_label, type)
57
57
  end
58
58
  end
59
59
 
60
- def create_locator_by_id(locator)
60
+ def create_locator_by_id(locator, type)
61
61
  method_name = locator.strip
62
+ locator_hash = { locator => type }
62
63
  code_generation(method_name: method_name,
63
64
  locator_type: ACC_ID,
64
- locator_value: locator)
65
+ locator_value: locator_hash,
66
+ accessibility_id: true)
65
67
  end
66
68
 
67
69
  def create_locator_by_label(text, type)
68
70
  method_name = "#{type}#{increment_locator_id}"
69
71
  locator = "#{LABEL} LIKE '#{text}'"
72
+ locator_hash = { locator => type }
70
73
  code_generation(method_name: method_name,
71
74
  locator_type: NSPREDICATE,
72
- locator_value: locator)
75
+ locator_value: locator_hash)
73
76
  end
74
77
 
75
78
  def create_page_objects
@@ -110,23 +113,35 @@ class IOS < Base
110
113
  end
111
114
  end
112
115
 
113
- def code_generation(method_name:, locator_type:, locator_value:)
114
- java = @language.java(camel_method_name: camel_style(method_name),
116
+ def code_generation(method_name:,
117
+ locator_type:,
118
+ locator_value:,
119
+ accessibility_id: false)
120
+ method_name = "_#{method_name}" if method_name[0] =~ /\d+/
121
+ snake_style = snake_style(method_name)
122
+ camel_style = camel_style(method_name)
123
+ java = @language.java(camel_method_name: camel_style,
115
124
  locator_type: locator_type,
116
- locator_value: locator_value)
117
- ruby = @language.ruby(snake_method_name: snake_style(method_name),
125
+ locator_value: locator_value.keys.first)
126
+ ruby = @language.ruby(snake_method_name: snake_style,
118
127
  locator_type: locator_type,
119
- locator_value: locator_value)
120
- python = @language.python(snake_method_name: snake_style(method_name),
128
+ locator_value: locator_value.keys.first)
129
+ python = @language.python(snake_method_name: snake_style,
121
130
  locator_type: locator_type,
122
- locator_value: locator_value)
123
- js = @language.js(camel_method_name: camel_style(method_name),
131
+ locator_value: locator_value.keys.first)
132
+ js = @language.js(camel_method_name: camel_style,
124
133
  locator_type: locator_type,
125
- locator_value: locator_value)
134
+ locator_value: locator_value.keys.first)
135
+ xcui_element_type = XCUIElement.types[locator_value.values.first.to_sym]
136
+ swift = @language.swift(camel_method_name: camel_style,
137
+ element_type: xcui_element_type,
138
+ locator_value: locator_value.keys.first,
139
+ accessibility_id: accessibility_id)
126
140
  save(code: java, format: Language::JAVA)
127
141
  save(code: ruby, format: Language::RUBY)
128
142
  save(code: python, format: Language::PYTHON)
129
143
  save(code: js, format: Language::JAVASCRIPT)
144
+ save(code: swift, format: Language::SWIFT)
130
145
  end
131
146
 
132
147
  def page_source
@@ -3,6 +3,7 @@ class Language
3
3
  RUBY = 'rb'.freeze
4
4
  PYTHON = 'py'.freeze
5
5
  JAVASCRIPT = 'js'.freeze
6
+ SWIFT = 'swift'.freeze
6
7
 
7
8
  def java(camel_method_name:, locator_type:, locator_value:)
8
9
  <<~JAVA
@@ -20,18 +21,34 @@ class Language
20
21
 
21
22
  def python(snake_method_name:, locator_type:, locator_value:)
22
23
  <<~PYTHON
23
- #{snake_method_name} = driver.#{locator_type[:python]}("#{locator_value})"
24
+ #{snake_method_name} = self.driver.#{locator_type[:python]}("#{locator_value})"
24
25
 
25
26
  PYTHON
26
27
  end
27
28
 
28
29
  def js(camel_method_name:, locator_type:, locator_value:)
29
30
  <<~JS
30
- #{camel_method_name} = driver.elements("#{locator_type[:javascript]}", "#{locator_value}");
31
+ let #{camel_method_name} = await driver.elements("#{locator_type[:javascript]}", "#{locator_value}");
31
32
 
32
33
  JS
33
34
  end
34
35
 
36
+ def swift(camel_method_name:, element_type:, locator_value:, accessibility_id:)
37
+ if accessibility_id
38
+ <<~SWIFT
39
+ let #{camel_method_name} = app.#{element_type}["#{locator_value}"]
40
+
41
+ SWIFT
42
+ else
43
+ <<~SWIFT
44
+ let #{camel_method_name} = app.#{element_type}.matching(
45
+ NSPredicate(format: #{locator_value})
46
+ ).element
47
+
48
+ SWIFT
49
+ end
50
+ end
51
+
35
52
  def type(format)
36
53
  case format
37
54
  when 'ruby', 'rb'
@@ -42,8 +59,98 @@ class Language
42
59
  JAVASCRIPT
43
60
  when 'python', 'py'
44
61
  PYTHON
62
+ when 'swift'
63
+ SWIFT
45
64
  else
46
65
  "I haven't this language format"
47
66
  end
48
67
  end
68
+ end
69
+
70
+ class XCUIElement
71
+ def self.types
72
+ return {
73
+ Other: "otherElements",
74
+ Group: "groups",
75
+ Window: "windows",
76
+ Sheet: "sheets",
77
+ Drawer: "drawers",
78
+ Alert: "alerts",
79
+ Dialog: "dialogs",
80
+ Button: "buttons",
81
+ RadioButton: "radioButtons",
82
+ RadioGroup: "radioGroups",
83
+ CheckBox: "checkBoxes",
84
+ DisclosureTriangle: "disclosureTriangles",
85
+ PopUpButton: "popUpButtons",
86
+ ComboBox: "comboBoxes",
87
+ MenuButton: "menuButtons",
88
+ ToolbarButton: "toolbarButtons",
89
+ Popover: "popovers",
90
+ Keyboard: "keyboards",
91
+ Key: "keys",
92
+ NavigationBar: "navigationBars",
93
+ TabBar: "tabBars",
94
+ TabGroup: "tabGroups",
95
+ Toolbar: "toolbars",
96
+ StatusBar: "statusBars",
97
+ Table: "tables",
98
+ TableRow: "tableRows",
99
+ TableColumn: "tableColumns",
100
+ Outline: "outlines",
101
+ OutlineRow: "outlineRows",
102
+ Browser: "browsers",
103
+ CollectionView: "collectionViews",
104
+ Slider: "sliders",
105
+ PageIndicator: "pageIndicators",
106
+ ProgressIndicator: "progressIndicators",
107
+ ActivityIndicator: "activityIndicators",
108
+ SegmentedControl: "segmentedControls",
109
+ Picker: "pickers",
110
+ PickerWheel: "pickerWheels",
111
+ Switch: "switches",
112
+ Toggle: "toggles",
113
+ Link: "links",
114
+ Image: "images",
115
+ Icon: "icons",
116
+ SearchField: "searchFields",
117
+ ScrollView: "scrollViews",
118
+ ScrollBar: "scrollBars",
119
+ StaticText: "staticTexts",
120
+ TextField: "textFields",
121
+ SecureTextField: "secureTextFields",
122
+ DatePicker: "datePickers",
123
+ TextView: "textViews",
124
+ Menu: "menus",
125
+ MenuItem: "menuItems",
126
+ MenuBar: "menuBars",
127
+ MenuBarItem: "menuBarItems",
128
+ Map: "maps",
129
+ WebView: "webViews",
130
+ IncrementArrow: "incrementArrows",
131
+ DecrementArrow: "decrementArrows",
132
+ Timeline: "timelines",
133
+ RatingIndicator: "ratingIndicators",
134
+ ValueIndicator: "valueIndicators",
135
+ SplitGroup: "splitGroups",
136
+ Splitter: "splitters",
137
+ RelevanceIndicator: "relevanceIndicators",
138
+ ColorWell: "colorWells",
139
+ HelpTag: "helpTags",
140
+ Matte: "mattes",
141
+ DockItem: "dockItems",
142
+ Ruler: "rulers",
143
+ RulerMarker: "rulerMarkers",
144
+ Grid: "grids",
145
+ LevelIndicator: "levelIndicators",
146
+ Cell: "cells",
147
+ LayoutArea: "layoutAreas",
148
+ LayoutItem: "layoutItems",
149
+ Handle: "handles",
150
+ Stepper: "steppers",
151
+ Tab: "tabs",
152
+ TouchBar: "touchBars",
153
+ StatusItem: "statusItems"
154
+ }
155
+ end
49
156
  end
@@ -1,4 +1,4 @@
1
1
  module Skeleton
2
- VERSION ||= '0.1.11'.freeze
2
+ VERSION ||= '0.1.12'.freeze
3
3
  GEM_NAME ||= 'skeleton-ui'.freeze
4
4
  end
data/server/server.rb CHANGED
@@ -6,8 +6,12 @@ set :port, server_port
6
6
 
7
7
  File.open("#{Base::ROOT_DIR}/server/port", 'w+') { |f| f.write(server_port) }
8
8
 
9
+ not_found do
10
+ redirect 'skeleton'
11
+ end
12
+
9
13
  get '/' do
10
- redirect "skeleton"
14
+ redirect 'skeleton'
11
15
  end
12
16
 
13
17
  get '/:file' do
@@ -20,4 +24,4 @@ post '/:file' do
20
24
  domain = params[:file].split('.').last
21
25
  file = domain == params[:file] ? "#{domain}.html" : params[:file]
22
26
  send_file "#{Base::ROOT_DIR}/server/#{file}"
23
- end
27
+ end
data/server/skeleton.html CHANGED
@@ -19,6 +19,7 @@
19
19
  <li><a href="java">Java</a></li>
20
20
  <li><a href="python">Python</a></li>
21
21
  <li><a href="javascript">Javascript</a></li>
22
+ <li><a href="swift">Swift</a> (iOS required)</li>
22
23
  </div>
23
24
  </div>
24
25
  <footer class="my-5 pt-5 text-muted text-center text-small">
@@ -13,15 +13,15 @@
13
13
  <div class="py-5 text-center">
14
14
  <h2>Skeleton</h2>
15
15
  </div>
16
- <div class="row" style="min-height: 670px;">
16
+ <div class="row" style="min-height: 666px;">
17
17
  <div class="col-md-4 mb-4">
18
- <div class="aside" style="max-height: 670px;">
19
- <div class="aside__img" style="background-image: url(screenshot.png); outline: 1px solid gray;"></div>
18
+ <div class="aside">
19
+ <div class="aside__img" style="width:100%; height:100%; background-image: url(screenshot.png); outline: 1px solid gray;"></div>
20
20
  </div>
21
21
  </div>
22
22
  <div class="col-md-8">
23
23
  <h4 class="mb-3">Screen Objects:</h4>
24
- <div class="content" id="content" style="max-height: 670px; overflow-y: auto;">
24
+ <div class="content" id="content" style="max-height: 666px; overflow-y: auto;">
25
25
  <pre><code><%= @screen_objects %></code></pre>
26
26
  </div>
27
27
  </div>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: skeleton-ui
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.11
4
+ version: 0.1.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - a.alterpesotskiy
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-08-03 00:00:00.000000000 Z
11
+ date: 2018-08-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler