onlyoffice_documentserver_testing_framework 0.1.0

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.
Files changed (28) hide show
  1. checksums.yaml +7 -0
  2. data/lib/onlyoffice_documentserver_testing_framework.rb +5 -0
  3. data/lib/onlyoffice_documentserver_testing_framework/name.rb +10 -0
  4. data/lib/onlyoffice_documentserver_testing_framework/selenium_wrapper.rb +141 -0
  5. data/lib/onlyoffice_documentserver_testing_framework/selenium_wrapper/selenium_wrapper_exceptions.rb +7 -0
  6. data/lib/onlyoffice_documentserver_testing_framework/selenium_wrapper/selenium_wrapper_js_errors.rb +46 -0
  7. data/lib/onlyoffice_documentserver_testing_framework/selenium_wrapper/selenium_wrapper_js_errors/ignored_errors.list +28 -0
  8. data/lib/onlyoffice_documentserver_testing_framework/test_instance_docs.rb +64 -0
  9. data/lib/onlyoffice_documentserver_testing_framework/test_instance_docs/common_editor/editor_windows.rb +7 -0
  10. data/lib/onlyoffice_documentserver_testing_framework/test_instance_docs/doc_editor.rb +23 -0
  11. data/lib/onlyoffice_documentserver_testing_framework/test_instance_docs/doc_editor/doc_editor_top_toolbar.rb +17 -0
  12. data/lib/onlyoffice_documentserver_testing_framework/test_instance_docs/doc_editor/doc_editor_top_toolbar/top_toolbar_users.rb +32 -0
  13. data/lib/onlyoffice_documentserver_testing_framework/test_instance_docs/doc_editor/doc_editor_windows.rb +18 -0
  14. data/lib/onlyoffice_documentserver_testing_framework/test_instance_docs/doc_editor/doc_editor_windows/txt_options.rb +116 -0
  15. data/lib/onlyoffice_documentserver_testing_framework/test_instance_docs/doc_service_welcome.rb +35 -0
  16. data/lib/onlyoffice_documentserver_testing_framework/test_instance_docs/doc_test_site_functions.rb +235 -0
  17. data/lib/onlyoffice_documentserver_testing_framework/test_instance_docs/doc_test_site_functions/doc_test_file_list.rb +34 -0
  18. data/lib/onlyoffice_documentserver_testing_framework/test_instance_docs/doc_test_site_functions/doc_test_file_list/doc_test_site_file_list_entry.rb +101 -0
  19. data/lib/onlyoffice_documentserver_testing_framework/test_instance_docs/doc_test_site_functions/doc_test_site_server_helper.rb +25 -0
  20. data/lib/onlyoffice_documentserver_testing_framework/test_instance_docs/doc_test_site_functions/healthcheck_page.rb +15 -0
  21. data/lib/onlyoffice_documentserver_testing_framework/test_instance_docs/management.rb +206 -0
  22. data/lib/onlyoffice_documentserver_testing_framework/test_instance_docs/management/loader_helper.rb +50 -0
  23. data/lib/onlyoffice_documentserver_testing_framework/test_instance_docs/presentation_editor.rb +7 -0
  24. data/lib/onlyoffice_documentserver_testing_framework/test_instance_docs/spreadsheet_editor.rb +13 -0
  25. data/lib/onlyoffice_documentserver_testing_framework/test_instance_docs/spreadsheet_editor/spreadsheet_windows.rb +18 -0
  26. data/lib/onlyoffice_documentserver_testing_framework/test_instance_docs/spreadsheet_editor/spreadsheet_windows/csv_option.rb +58 -0
  27. data/lib/onlyoffice_documentserver_testing_framework/version.rb +9 -0
  28. metadata +229 -0
@@ -0,0 +1,206 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'management/loader_helper'
4
+ module OnlyofficeDocumentserverTestingFramework
5
+ # Class for management main methods
6
+ class Management
7
+ include SeleniumWrapper
8
+ include LoaderHelper
9
+
10
+ # @return [Integer] count of iframes to go into
11
+ attr_accessor :xpath_iframe_count
12
+ # @return [String] xpath to single iframe
13
+ attr_accessor :xpath_iframe
14
+
15
+ def initialize(instance)
16
+ @instance = instance
17
+ @xpath_iframe_count = 1
18
+ # Don't mixup iframe with help
19
+ @xpath_iframe = '//iframe[not(contains(@src, "help")) and '\
20
+ 'not(contains(@id, "fileFrame"))]'
21
+ @alert_dialog_xpath = '//div[@role="alertdialog"]'
22
+ @alert_dialog_span_xpath = "#{@alert_dialog_xpath}/div/div/div/span"
23
+ end
24
+
25
+ # @return [Boolean] check if loader present
26
+ def loading_present?
27
+ if @instance.webdriver.alert_exists?
28
+ raise 'Service Unavailable. There is alert while loading docs: '\
29
+ "\"#{@instance.webdriver.alert_text}\""
30
+ end
31
+
32
+ @instance.selenium.select_frame(@xpath_iframe, @xpath_iframe_count)
33
+ mobile_loader = false
34
+ loader1 = @instance.selenium.element_visible?('//div[contains(@id,"cmdloadmask")]')
35
+ loader2 = @instance.selenium.element_visible?('//*[contains(@class,"loadmask")]')
36
+ loader3 = @instance.selenium.element_visible?('//*[@class="asc-loadmask-body "]')
37
+ loader4 = @instance.selenium.element_present?('//*[@id="loading-text"]')
38
+ loader5 = @instance.selenium.element_visible?('//*[@id="loading-mask"]')
39
+ loader6 = @instance.selenium.element_visible?('//*[@class="modals-mask"]')
40
+ loader7 = @instance.selenium.element_visible?('//*[@class="asc-loadmask"]')
41
+ loader8 = @instance.selenium.element_visible?(@xpath_window_modal)
42
+ mobile_loader = wait_for_mobile_loading if main_frame_mobile_element_visible?
43
+ @instance.selenium.select_top_frame
44
+ loading = loader1 || loader2 || loader3 ||
45
+ loader4 || loader5 || loader6 || loader7 ||
46
+ loader8 || mobile_loader
47
+ OnlyofficeLoggerHelper.log("Loading Present: #{loading}")
48
+ loading
49
+ end
50
+
51
+ def main_frame_mobile_element_visible?
52
+ @instance.selenium.element_visible?('//*[contains(@class,"framework7-root")]')
53
+ end
54
+
55
+ # Check if mobile loading is in progress
56
+ # @return [True, False] is loading in progress
57
+ def wait_for_mobile_loading
58
+ @instance.selenium.element_visible?('//*[contains(@class,"modal-preloader")]') ||
59
+ @instance.selenium.element_visible?('//*[contains(@class,"loader-page")]') ||
60
+ @instance.selenium.get_element('//*[contains(@class,"iScrollVerticalScrollbar")]').nil?
61
+ end
62
+
63
+ # Wait until loader is present
64
+ # @param timeout [Integer] wait for loading to be present
65
+ def wait_loading_present(timeout = 15)
66
+ timer = 0
67
+ while timer < timeout && !loading_present?
68
+ sleep 1
69
+ timer += 1
70
+ OnlyofficeLoggerHelper.log('Waiting for start loading of documents. '\
71
+ "Waiting for #{timer} seconds of #{timeout}")
72
+ end
73
+ return unless timer == timeout
74
+
75
+ @instance.webdriver.webdriver_error("Waiting for start loading failed for #{timeout} seconds")
76
+ end
77
+
78
+ # Wait for operation with round status in canvas editor
79
+ # @param [Integer] timeout_in_seconds count of seconds to wait
80
+ def wait_for_operation_with_round_status_canvas(timeout_in_seconds = 300, options = {})
81
+ result = true
82
+ OnlyofficeLoggerHelper.log('Start waiting for Round Status')
83
+
84
+ current_wait_time = 0
85
+ wait_until_frame_loaded
86
+ wait_for_round_loading_to_start
87
+ while loading_present?
88
+ sleep(1)
89
+ current_wait_time += 1
90
+ OnlyofficeLoggerHelper.log('Waiting for Round Status for '\
91
+ "#{current_wait_time} of "\
92
+ "#{timeout_in_seconds} timeout")
93
+ @instance.doc_editor.windows.txt_options.txt_options = 'Unicode (UTF-8)'
94
+ @instance.spreadsheet_editor.windows.csv_option.csv_options = options
95
+
96
+ check_2_5_version_error
97
+ handle_error
98
+
99
+ # Close 'Select Encoding' dialog if present
100
+ if current_wait_time > timeout_in_seconds
101
+ @instance.selenium.select_top_frame
102
+ @instance.selenium.webdriver_error('Timeout for render file')
103
+ end
104
+ handle_alert_dialog
105
+ @instance.selenium.select_top_frame
106
+ if permission_denied_message?
107
+ @instance.selenium.webdriver_error('There is not enough access rights for document')
108
+ end
109
+ @instance.selenium.webdriver_error('The required file was not found') if file_not_found_message?
110
+ end
111
+
112
+ @instance.selenium.select_frame(@xpath_iframe, @xpath_iframe_count)
113
+ if @instance.selenium.element_visible?(@alert_dialog_span_xpath)
114
+ alert_text = @instance.selenium.get_text(@alert_dialog_span_xpath).tr("\n", ' ')
115
+ result = "Server Alert: #{alert_text}"
116
+ if result.include?('charts and images will be lost')
117
+ style_left = @instance.selenium.get_style_parameter(@alert_dialog_xpath,
118
+ 'left')
119
+ .gsub!('px', '').to_i
120
+ result = true if style_left.negative?
121
+ end
122
+ @instance.selenium.select_top_frame
123
+ return result
124
+ elsif @instance.selenium.element_visible?(@xpath_error_window)
125
+ result = "Server Error: #{@instance.selenium.get_text(@xpath_error_window_text).tr("\n", ' ')}"
126
+ @instance.selenium.select_top_frame
127
+ @instance.selenium.webdriver_error(result)
128
+ end
129
+
130
+ @instance.selenium.execute_javascript('window.onbeforeunload = null') # OFF POPUP WINDOW
131
+ @instance.selenium.select_top_frame
132
+ add_error_handler
133
+ result
134
+ end
135
+
136
+ # Since v6.0.0 of DocumentServer
137
+ # round loading mask start to appear not instantly
138
+ # but after some timeout specified in
139
+ # https://github.com/ONLYOFFICE/web-apps/commit/a7988dc7ec1f1151ef2c204677d1746a65e39132#diff-eee9ef38f1b712adf8bcc94c29de431aR127
140
+ def wait_for_round_loading_to_start
141
+ appear_timeout = 0.5
142
+ sleep(appear_timeout * 4) # quad just in case, double is not enough
143
+ end
144
+
145
+ # @return [Boolean] check if frame with editor is loaded
146
+ def frame_loaded?
147
+ @instance.selenium.select_frame(@xpath_iframe, @xpath_iframe_count)
148
+ loaded = @instance.selenium.element_visible?('//*[@id="viewport"]') ||
149
+ @instance.selenium.element_visible?('//*[@id="editor_sdk"]')
150
+ @instance.selenium.select_top_frame
151
+ loaded
152
+ end
153
+
154
+ # @return [Void] wait until iframe have some content
155
+ def wait_until_frame_loaded
156
+ @instance.webdriver.wait_until do
157
+ frame_loaded?
158
+ end
159
+ end
160
+
161
+ def permission_denied_message?
162
+ denied_xpath = '//div[contains(text(),"You don\'t have enough permission to view the file")]'
163
+ @instance.selenium.select_frame
164
+ error_on_loading = @instance.selenium.element_present?(denied_xpath)
165
+ @instance.selenium.select_top_frame
166
+ error_on_loading
167
+ end
168
+
169
+ def file_not_found_message?
170
+ message_xpath = '//div[contains(@class, "tooltip-inner") and '\
171
+ 'contains(text(),"The required file was not found")]'
172
+ @instance.selenium.select_frame
173
+ error_on_loading = @instance.selenium.element_visible?(message_xpath)
174
+ @instance.selenium.select_top_frame
175
+ OnlyofficeLoggerHelper.log("file_not_found_message is shown: #{error_on_loading}")
176
+ error_on_loading
177
+ end
178
+
179
+ # Add js code to handle JS errors
180
+ # @return [nil]
181
+ def add_error_handler
182
+ js_handler = 'window.jsErrors = [];'\
183
+ 'window.onerror = function(errorMessage) '\
184
+ '{window.jsErrors[window.jsErrors.length] = errorMessage;}'
185
+ @instance.selenium.select_frame @instance.management.xpath_iframe
186
+ @instance.selenium.execute_javascript(js_handler)
187
+ @instance.selenium.select_top_frame
188
+ end
189
+
190
+ # @return [Symbol] editor typo of opened document
191
+ def editor_type
192
+ @instance.selenium.select_top_frame
193
+ url = selenium_functions(:get_url)
194
+ case url
195
+ when /documenteditor/
196
+ :document
197
+ when /spreadsheeteditor/
198
+ :spreadsheet
199
+ when /presentationeditor/
200
+ :presentation
201
+ else
202
+ @instance.selenium.webdriver_error "Unknown editor type for url: #{url}"
203
+ end
204
+ end
205
+ end
206
+ end
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OnlyofficeDocumentserverTestingFramework
4
+ # Module for methods with loader of document
5
+ module LoaderHelper
6
+ # Check if any error from DocumentServer v2.5
7
+ def check_2_5_version_error
8
+ @instance.selenium.select_frame(@xpath_iframe, @xpath_iframe_count)
9
+ base_error_message_xpath = '//div[contains(@class,"x-message-box")]'
10
+ error_box_xpath = "#{base_error_message_xpath}/div[2]/div[1]/div[2]/span"
11
+ if @instance.selenium.element_visible?(error_box_xpath) &&
12
+ @instance.selenium.get_style_parameter(base_error_message_xpath, 'left')
13
+ .gsub('px', '').to_i.positive?
14
+ error_text = @instance.selenium.get_text(error_box_xpath).tr("\n", ' ')
15
+ @instance.selenium.webdriver_error("Server Error: #{error_text}")
16
+ end
17
+ end
18
+
19
+ # Handle default error in alert
20
+ def handle_error
21
+ @instance.selenium.select_top_frame
22
+ error = error_message_alert
23
+ @instance.selenium.webdriver_error(error) unless error.nil?
24
+ @instance.selenium.select_frame(@xpath_iframe, @xpath_iframe_count)
25
+ end
26
+
27
+ # Check for error message 3.0 version
28
+ def error_message_alert
29
+ alert_xpath = "//div[contains(@class,'asc-window modal alert')]"
30
+ return unless visible?("#{alert_xpath}/div[2]/div[1]/div[2]/span") &&
31
+ selenium_functions(:get_style_parameter, alert_xpath, 'left')
32
+ .gsub('px', '').to_i.positive?
33
+
34
+ error = selenium_functions(:get_text, "#{alert_xpath}/div[2]/div[1]/div[2]/span").tr("\n", ' ')
35
+ "Server Error: #{error}"
36
+ end
37
+
38
+ alias get_error_message_alert error_message_alert
39
+ extend Gem::Deprecate
40
+ deprecate :get_error_message_alert, :error_message_alert, 2025, 1
41
+
42
+ # Handle some more alert dialogs
43
+ def handle_alert_dialog
44
+ return unless @instance.selenium.element_visible?(@alert_dialog_span_xpath)
45
+
46
+ error = @instance.selenium.get_text(@alert_dialog_span_xpath).tr("\n", ' ')
47
+ @instance.selenium.webdriver_error("Server Error: #{error}")
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OnlyofficeDocumentserverTestingFramework
4
+ # Class for all Presentation Editor actions
5
+ class PresentationEditor < DocEditor
6
+ end
7
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'spreadsheet_editor/spreadsheet_windows'
4
+
5
+ module OnlyofficeDocumentserverTestingFramework
6
+ # Class for all Spreadsheet Editor actions
7
+ class SpreadsheetEditor < DocEditor
8
+ # @return [SpreadsheetEditorWindows] windows of spreadsheet editor
9
+ def windows
10
+ @windows ||= SpreadsheetEditorWindows.new(@instance)
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'spreadsheet_windows/csv_option'
4
+
5
+ module OnlyofficeDocumentserverTestingFramework
6
+ # Windows of Spreadsheet Editor
7
+ class SpreadsheetEditorWindows < EditorWindows
8
+ def initialize(instance)
9
+ @instance = instance
10
+ super()
11
+ end
12
+
13
+ # @return [CsvOption] csv windows
14
+ def csv_option
15
+ @csv_option ||= CsvOption.new(@instance)
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,58 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OnlyofficeDocumentserverTestingFramework
4
+ # Class for CSV window
5
+ class CsvOption < TxtOptions
6
+ include SeleniumWrapper
7
+
8
+ def initialize(instance)
9
+ super(instance)
10
+ @xpath_codepage_selector = '//*[contains(text(), "CSV")]/../..//div[@id="id-codepages-combo"]'
11
+ end
12
+
13
+ # @return [Array<Symbol>] list of possible csv delimiters
14
+ DELIMITER_TYPE = %i[comma semicolon colon tab space other].freeze
15
+
16
+ # region CVN Framework
17
+ def delimiter
18
+ BoundComboBoxUl.new(@instance, '//*[@id="id-delimiters-combo"]', nil, 'span')
19
+ end
20
+
21
+ # @return [TextInput] text input for enter custom delimiter
22
+ def other_delimiter
23
+ @other_delimiter ||= TextInput.new(@instance, '//*[@id="id-delimiter-other"]')
24
+ end
25
+
26
+ # endregion
27
+
28
+ # region Function
29
+
30
+ # @param [Symbol] delimiter_type like as :semicolon
31
+ def delimiter_select(delimiter_type)
32
+ if DELIMITER_TYPE.include?(delimiter_type)
33
+ delimiter.select_by_number(DELIMITER_TYPE.index(delimiter_type) + 1)
34
+ else
35
+ delimiter.select_by_number(DELIMITER_TYPE.index(:other) + 1)
36
+ other_delimiter.set(delimiter_type)
37
+ end
38
+ end
39
+
40
+ # Set options in csv window
41
+ # @param options [Hash] options to set
42
+ # @return [nil]
43
+ def csv_options=(options = {})
44
+ options[:encoding_to_set] ||= 'Unicode (UTF-8)'
45
+ options[:csv_delimiter] ||= :comma
46
+ return unless dialog_window_opened?
47
+
48
+ encoding_select options[:encoding_to_set]
49
+ delimiter_select options[:csv_delimiter]
50
+ click_on_ok
51
+ end
52
+
53
+ alias set_csv_options csv_options=
54
+ extend Gem::Deprecate
55
+ deprecate :set_csv_options, :csv_options=, 2025, 1
56
+ # endregion
57
+ end
58
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OnlyofficeDocumentserverTestingFramework
4
+ # Module to hold version of Gem
5
+ module Version
6
+ # [String] version of gem
7
+ STRING = '0.1.0'
8
+ end
9
+ end
metadata ADDED
@@ -0,0 +1,229 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: onlyoffice_documentserver_testing_framework
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - ONLYOFFICE
8
+ - Pavel Lobashov
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2020-08-11 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: onlyoffice_logger_helper
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: '1'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: '1'
28
+ - !ruby/object:Gem::Dependency
29
+ name: onlyoffice_webdriver_wrapper
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - "~>"
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: overcommit
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - '='
47
+ - !ruby/object:Gem::Version
48
+ version: 0.55.0
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - '='
54
+ - !ruby/object:Gem::Version
55
+ version: 0.55.0
56
+ - !ruby/object:Gem::Dependency
57
+ name: rake
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - '='
61
+ - !ruby/object:Gem::Version
62
+ version: 13.0.1
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - '='
68
+ - !ruby/object:Gem::Version
69
+ version: 13.0.1
70
+ - !ruby/object:Gem::Dependency
71
+ name: rspec
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - '='
75
+ - !ruby/object:Gem::Version
76
+ version: 3.9.0
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - '='
82
+ - !ruby/object:Gem::Version
83
+ version: 3.9.0
84
+ - !ruby/object:Gem::Dependency
85
+ name: rubocop
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - '='
89
+ - !ruby/object:Gem::Version
90
+ version: 0.89.1
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - '='
96
+ - !ruby/object:Gem::Version
97
+ version: 0.89.1
98
+ - !ruby/object:Gem::Dependency
99
+ name: rubocop-performance
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - '='
103
+ - !ruby/object:Gem::Version
104
+ version: 1.7.1
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - '='
110
+ - !ruby/object:Gem::Version
111
+ version: 1.7.1
112
+ - !ruby/object:Gem::Dependency
113
+ name: rubocop-rake
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - '='
117
+ - !ruby/object:Gem::Version
118
+ version: 0.5.1
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - '='
124
+ - !ruby/object:Gem::Version
125
+ version: 0.5.1
126
+ - !ruby/object:Gem::Dependency
127
+ name: rubocop-rspec
128
+ requirement: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - '='
131
+ - !ruby/object:Gem::Version
132
+ version: 1.42.0
133
+ type: :development
134
+ prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - '='
138
+ - !ruby/object:Gem::Version
139
+ version: 1.42.0
140
+ - !ruby/object:Gem::Dependency
141
+ name: simplecov
142
+ requirement: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - '='
145
+ - !ruby/object:Gem::Version
146
+ version: 0.18.5
147
+ type: :development
148
+ prerelease: false
149
+ version_requirements: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - '='
152
+ - !ruby/object:Gem::Version
153
+ version: 0.18.5
154
+ - !ruby/object:Gem::Dependency
155
+ name: yard
156
+ requirement: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - '='
159
+ - !ruby/object:Gem::Version
160
+ version: 0.9.25
161
+ type: :development
162
+ prerelease: false
163
+ version_requirements: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - '='
166
+ - !ruby/object:Gem::Version
167
+ version: 0.9.25
168
+ description: ONLYOFFICE DocumentServer testing framework, used in QA
169
+ email:
170
+ - shockwavenn@gmail.com
171
+ executables: []
172
+ extensions: []
173
+ extra_rdoc_files: []
174
+ files:
175
+ - lib/onlyoffice_documentserver_testing_framework.rb
176
+ - lib/onlyoffice_documentserver_testing_framework/name.rb
177
+ - lib/onlyoffice_documentserver_testing_framework/selenium_wrapper.rb
178
+ - lib/onlyoffice_documentserver_testing_framework/selenium_wrapper/selenium_wrapper_exceptions.rb
179
+ - lib/onlyoffice_documentserver_testing_framework/selenium_wrapper/selenium_wrapper_js_errors.rb
180
+ - lib/onlyoffice_documentserver_testing_framework/selenium_wrapper/selenium_wrapper_js_errors/ignored_errors.list
181
+ - lib/onlyoffice_documentserver_testing_framework/test_instance_docs.rb
182
+ - lib/onlyoffice_documentserver_testing_framework/test_instance_docs/common_editor/editor_windows.rb
183
+ - lib/onlyoffice_documentserver_testing_framework/test_instance_docs/doc_editor.rb
184
+ - lib/onlyoffice_documentserver_testing_framework/test_instance_docs/doc_editor/doc_editor_top_toolbar.rb
185
+ - lib/onlyoffice_documentserver_testing_framework/test_instance_docs/doc_editor/doc_editor_top_toolbar/top_toolbar_users.rb
186
+ - lib/onlyoffice_documentserver_testing_framework/test_instance_docs/doc_editor/doc_editor_windows.rb
187
+ - lib/onlyoffice_documentserver_testing_framework/test_instance_docs/doc_editor/doc_editor_windows/txt_options.rb
188
+ - lib/onlyoffice_documentserver_testing_framework/test_instance_docs/doc_service_welcome.rb
189
+ - lib/onlyoffice_documentserver_testing_framework/test_instance_docs/doc_test_site_functions.rb
190
+ - lib/onlyoffice_documentserver_testing_framework/test_instance_docs/doc_test_site_functions/doc_test_file_list.rb
191
+ - lib/onlyoffice_documentserver_testing_framework/test_instance_docs/doc_test_site_functions/doc_test_file_list/doc_test_site_file_list_entry.rb
192
+ - lib/onlyoffice_documentserver_testing_framework/test_instance_docs/doc_test_site_functions/doc_test_site_server_helper.rb
193
+ - lib/onlyoffice_documentserver_testing_framework/test_instance_docs/doc_test_site_functions/healthcheck_page.rb
194
+ - lib/onlyoffice_documentserver_testing_framework/test_instance_docs/management.rb
195
+ - lib/onlyoffice_documentserver_testing_framework/test_instance_docs/management/loader_helper.rb
196
+ - lib/onlyoffice_documentserver_testing_framework/test_instance_docs/presentation_editor.rb
197
+ - lib/onlyoffice_documentserver_testing_framework/test_instance_docs/spreadsheet_editor.rb
198
+ - lib/onlyoffice_documentserver_testing_framework/test_instance_docs/spreadsheet_editor/spreadsheet_windows.rb
199
+ - lib/onlyoffice_documentserver_testing_framework/test_instance_docs/spreadsheet_editor/spreadsheet_windows/csv_option.rb
200
+ - lib/onlyoffice_documentserver_testing_framework/version.rb
201
+ homepage: https://github.com/onlyoffice-testing-robot/onlyoffice_documentserver_testing_framework
202
+ licenses:
203
+ - AGPL-3.0
204
+ metadata:
205
+ bug_tracker_uri: https://github.com/onlyoffice-testing-robot/onlyoffice_documentserver_testing_framework/issues
206
+ changelog_uri: https://github.com/onlyoffice-testing-robot/onlyoffice_documentserver_testing_framework/blob/master/CHANGELOG.md
207
+ documentation_uri: https://www.rubydoc.info/gems/onlyoffice_documentserver_testing_framework
208
+ homepage_uri: https://github.com/onlyoffice-testing-robot/onlyoffice_documentserver_testing_framework
209
+ source_code_uri: https://github.com/onlyoffice-testing-robot/onlyoffice_documentserver_testing_framework
210
+ post_install_message:
211
+ rdoc_options: []
212
+ require_paths:
213
+ - lib
214
+ required_ruby_version: !ruby/object:Gem::Requirement
215
+ requirements:
216
+ - - ">="
217
+ - !ruby/object:Gem::Version
218
+ version: '2.4'
219
+ required_rubygems_version: !ruby/object:Gem::Requirement
220
+ requirements:
221
+ - - ">="
222
+ - !ruby/object:Gem::Version
223
+ version: '0'
224
+ requirements: []
225
+ rubygems_version: 3.1.4
226
+ signing_key:
227
+ specification_version: 4
228
+ summary: ONLYOFFICE DocumentServer testing framework
229
+ test_files: []