Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
seleniumhq
GitHub Repository: seleniumhq/selenium
Path: blob/trunk/rust/tests/browser_tests.rs
4501 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", "140", "140.0")]
31
#[case("edge", "msedgedriver", "141", "141.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
fn browser_version_test(
37
#[case] browser: String,
38
#[case] driver_name: String,
39
#[case] browser_version: String,
40
#[case] driver_version: String,
41
) {
42
let mut cmd = get_selenium_manager();
43
cmd.args([
44
"--browser",
45
&browser,
46
"--browser-version",
47
&browser_version,
48
"--debug",
49
"--avoid-browser-download",
50
"--language-binding",
51
"java",
52
])
53
.assert()
54
.success()
55
.code(0);
56
57
let stdout = get_stdout(&mut cmd);
58
59
assert!(stdout.contains(&driver_name));
60
if !browser_version.is_empty() && stdout.contains("cache") {
61
assert!(stdout.contains(&driver_version));
62
}
63
assert!(!stdout.contains("Error sending stats"));
64
}
65
66
#[rstest]
67
#[case("wrong-browser", "", "", DATAERR)]
68
#[case("chrome", "wrong-browser-version", "", DATAERR)]
69
#[case("chrome", "", "wrong-driver-version", DATAERR)]
70
#[case("firefox", "", "wrong-driver-version", DATAERR)]
71
#[case("edge", "wrong-browser-version", "", DATAERR)]
72
#[case("edge", "", "wrong-driver-version", DATAERR)]
73
#[case("iexplorer", "", "wrong-driver-version", DATAERR)]
74
fn wrong_parameters_test(
75
#[case] browser: String,
76
#[case] browser_version: String,
77
#[case] driver_version: String,
78
#[case] error_code: i32,
79
) {
80
let mut cmd = get_selenium_manager();
81
let result = cmd
82
.args([
83
"--debug",
84
"--browser",
85
&browser,
86
"--browser-version",
87
&browser_version,
88
"--driver-version",
89
&driver_version,
90
])
91
.assert()
92
.try_success();
93
94
assert_output(&mut cmd, result, vec!["in PATH"], error_code);
95
}
96
97
#[test]
98
fn invalid_geckodriver_version_test() {
99
let mut cmd = get_selenium_manager();
100
let result = cmd
101
.args([
102
"--browser",
103
"firefox",
104
"--browser-version",
105
"51",
106
"--avoid-browser-download",
107
])
108
.assert()
109
.try_success();
110
111
assert_output(
112
&mut cmd,
113
result,
114
vec!["Not valid geckodriver version found"],
115
DATAERR,
116
);
117
}
118
119
#[rstest]
120
#[case(
121
"windows",
122
"chrome",
123
r"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe"
124
)]
125
#[case(
126
"windows",
127
"chrome",
128
r"C:\Program Files\Google\Chrome\Application\chrome.exe"
129
)]
130
#[case("linux", "chrome", "/usr/bin/google-chrome")]
131
#[case(
132
"macos",
133
"chrome",
134
r"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
135
)]
136
fn browser_path_test(#[case] os: String, #[case] browser: String, #[case] browser_path: String) {
137
if OS.eq(&os) && Path::new(&browser_path).exists() {
138
let mut cmd = get_selenium_manager();
139
cmd.args(["--browser", &browser, "--browser-path", &browser_path])
140
.assert()
141
.success()
142
.code(0);
143
144
let stdout = get_stdout(&mut cmd);
145
146
assert!(!stdout.contains("WARN"));
147
}
148
}
149
150
#[test]
151
fn invalid_browser_path_test() {
152
let mut cmd = get_selenium_manager();
153
cmd.args([
154
"--browser",
155
"chrome",
156
"--browser-path",
157
"/bad/path/google-chrome-wrong",
158
])
159
.assert()
160
.code(DATAERR)
161
.failure();
162
}
163
164