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.
- 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: []
|