onlyoffice_documentserver_testing_framework 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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: []