onlyoffice_documentserver_testing_framework 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/onlyoffice_documentserver_testing_framework.rb +5 -0
- data/lib/onlyoffice_documentserver_testing_framework/name.rb +10 -0
- data/lib/onlyoffice_documentserver_testing_framework/selenium_wrapper.rb +141 -0
- data/lib/onlyoffice_documentserver_testing_framework/selenium_wrapper/selenium_wrapper_exceptions.rb +7 -0
- data/lib/onlyoffice_documentserver_testing_framework/selenium_wrapper/selenium_wrapper_js_errors.rb +46 -0
- data/lib/onlyoffice_documentserver_testing_framework/selenium_wrapper/selenium_wrapper_js_errors/ignored_errors.list +28 -0
- data/lib/onlyoffice_documentserver_testing_framework/test_instance_docs.rb +64 -0
- data/lib/onlyoffice_documentserver_testing_framework/test_instance_docs/common_editor/editor_windows.rb +7 -0
- data/lib/onlyoffice_documentserver_testing_framework/test_instance_docs/doc_editor.rb +23 -0
- data/lib/onlyoffice_documentserver_testing_framework/test_instance_docs/doc_editor/doc_editor_top_toolbar.rb +17 -0
- data/lib/onlyoffice_documentserver_testing_framework/test_instance_docs/doc_editor/doc_editor_top_toolbar/top_toolbar_users.rb +32 -0
- data/lib/onlyoffice_documentserver_testing_framework/test_instance_docs/doc_editor/doc_editor_windows.rb +18 -0
- data/lib/onlyoffice_documentserver_testing_framework/test_instance_docs/doc_editor/doc_editor_windows/txt_options.rb +116 -0
- data/lib/onlyoffice_documentserver_testing_framework/test_instance_docs/doc_service_welcome.rb +35 -0
- data/lib/onlyoffice_documentserver_testing_framework/test_instance_docs/doc_test_site_functions.rb +235 -0
- data/lib/onlyoffice_documentserver_testing_framework/test_instance_docs/doc_test_site_functions/doc_test_file_list.rb +34 -0
- 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
- data/lib/onlyoffice_documentserver_testing_framework/test_instance_docs/doc_test_site_functions/doc_test_site_server_helper.rb +25 -0
- data/lib/onlyoffice_documentserver_testing_framework/test_instance_docs/doc_test_site_functions/healthcheck_page.rb +15 -0
- data/lib/onlyoffice_documentserver_testing_framework/test_instance_docs/management.rb +206 -0
- data/lib/onlyoffice_documentserver_testing_framework/test_instance_docs/management/loader_helper.rb +50 -0
- data/lib/onlyoffice_documentserver_testing_framework/test_instance_docs/presentation_editor.rb +7 -0
- data/lib/onlyoffice_documentserver_testing_framework/test_instance_docs/spreadsheet_editor.rb +13 -0
- data/lib/onlyoffice_documentserver_testing_framework/test_instance_docs/spreadsheet_editor/spreadsheet_windows.rb +18 -0
- data/lib/onlyoffice_documentserver_testing_framework/test_instance_docs/spreadsheet_editor/spreadsheet_windows/csv_option.rb +58 -0
- data/lib/onlyoffice_documentserver_testing_framework/version.rb +9 -0
- 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
|
data/lib/onlyoffice_documentserver_testing_framework/test_instance_docs/management/loader_helper.rb
ADDED
@@ -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,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
|
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: []
|