Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
seleniumhq
GitHub Repository: seleniumhq/selenium
Path: blob/trunk/rust/tests/browser_tests.rs
2885 views
1
// Licensed to the Software Freedom Conservancy (SFC) under one
2
// or more contributor license agreements. See the NOTICE file
3
// distributed with this work for additional information
4
// regarding copyright ownership. The SFC licenses this file
5
// to you under the Apache License, Version 2.0 (the
6
// "License"); you may not use this file except in compliance
7
// with the License. You may obtain a copy of the License at
8
//
9
// http://www.apache.org/licenses/LICENSE-2.0
10
//
11
// Unless required by applicable law or agreed to in writing,
12
// software distributed under the License is distributed on an
13
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
// KIND, either express or implied. See the License for the
15
// specific language governing permissions and limitations
16
// under the License.
17
18
use crate::common::{assert_output, get_selenium_manager, get_stdout};
19
20
use exitcode::DATAERR;
21
use rstest::rstest;
22
use std::env::consts::OS;
23
use std::path::Path;
24
25
mod common;
26
27
#[rstest]
28
#[case("chrome", "chromedriver", "114", "114.0.5735.90")]
29
#[case("chrome", "chromedriver", "115", "115.0.5790")]
30
#[case("edge", "msedgedriver", "105", "105.0")]
31
#[case("edge", "msedgedriver", "106", "106.0")]
32
#[case("firefox", "geckodriver", "101", "0.31.0")]
33
#[case("firefox", "geckodriver", "91", "0.31.0")]
34
#[case("firefox", "geckodriver", "90", "0.30.0")]
35
#[case("firefox", "geckodriver", "62", "0.29.1")]
36
#[case("firefox", "geckodriver", "53", "0.18.0")]
37
fn browser_version_test(
38
#[case] browser: String,
39
#[case] driver_name: String,
40
#[case] browser_version: String,
41
#[case] driver_version: String,
42
) {
43
let mut cmd = get_selenium_manager();
44
cmd.args([
45
"--browser",
46
&browser,
47
"--browser-version",
48
&browser_version,
49
"--debug",
50
"--avoid-browser-download",
51
"--language-binding",
52
"java",
53
])
54
.assert()
55
.success()
56
.code(0);
57
58
let stdout = get_stdout(&mut cmd);
59
60
assert!(stdout.contains(&driver_name));
61
if !browser_version.is_empty() && stdout.contains("cache") {
62
assert!(stdout.contains(&driver_version));
63
}
64
assert!(!stdout.contains("Error sending stats"));
65
}
66
67
#[rstest]
68
#[case("wrong-browser", "", "", DATAERR)]
69
#[case("chrome", "wrong-browser-version", "", DATAERR)]
70
#[case("chrome", "", "wrong-driver-version", DATAERR)]
71
#[case("firefox", "", "wrong-driver-version", DATAERR)]
72
#[case("edge", "wrong-browser-version", "", DATAERR)]
73
#[case("edge", "", "wrong-driver-version", DATAERR)]
74
#[case("iexplorer", "", "wrong-driver-version", DATAERR)]
75
fn wrong_parameters_test(
76
#[case] browser: String,
77
#[case] browser_version: String,
78
#[case] driver_version: String,
79
#[case] error_code: i32,
80
) {
81
let mut cmd = get_selenium_manager();
82
let result = cmd
83
.args([
84
"--debug",
85
"--browser",
86
&browser,
87
"--browser-version",
88
&browser_version,
89
"--driver-version",
90
&driver_version,
91
])
92
.assert()
93
.try_success();
94
95
assert_output(&mut cmd, result, vec!["in PATH"], error_code);
96
}
97
98
#[test]
99
fn invalid_geckodriver_version_test() {
100
let mut cmd = get_selenium_manager();
101
let result = cmd
102
.args([
103
"--browser",
104
"firefox",
105
"--browser-version",
106
"51",
107
"--avoid-browser-download",
108
])
109
.assert()
110
.try_success();
111
112
assert_output(
113
&mut cmd,
114
result,
115
vec!["Not valid geckodriver version found"],
116
DATAERR,
117
);
118
}
119
120
#[rstest]
121
#[case(
122
"windows",
123
"chrome",
124
r"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe"
125
)]
126
#[case(
127
"windows",
128
"chrome",
129
r"C:\Program Files\Google\Chrome\Application\chrome.exe"
130
)]
131
#[case("linux", "chrome", "/usr/bin/google-chrome")]
132
#[case(
133
"macos",
134
"chrome",
135
r"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
136
)]
137
fn browser_path_test(#[case] os: String, #[case] browser: String, #[case] browser_path: String) {
138
if OS.eq(&os) && Path::new(&browser_path).exists() {
139
let mut cmd = get_selenium_manager();
140
cmd.args(["--browser", &browser, "--browser-path", &browser_path])
141
.assert()
142
.success()
143
.code(0);
144
145
let stdout = get_stdout(&mut cmd);
146
147
assert!(!stdout.contains("WARN"));
148
}
149
}
150
151
#[test]
152
fn invalid_browser_path_test() {
153
let mut cmd = get_selenium_manager();
154
cmd.args([
155
"--browser",
156
"chrome",
157
"--browser-path",
158
"/bad/path/google-chrome-wrong",
159
])
160
.assert()
161
.code(DATAERR)
162
.failure();
163
}
164
165