Skip to content

Commit d652539

Browse files
committed
release Selenide 7.13.0
1 parent 1a84a48 commit d652539

5 files changed

Lines changed: 226 additions & 34 deletions

File tree

Gemfile.lock

Lines changed: 36 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,41 @@
11
GEM
22
remote: https://rubygems.org/
33
specs:
4-
activesupport (6.1.7.10)
4+
activesupport (7.1.6)
5+
base64
6+
benchmark (>= 0.3)
7+
bigdecimal
58
concurrent-ruby (~> 1.0, >= 1.0.2)
9+
connection_pool (>= 2.2.5)
10+
drb
611
i18n (>= 1.6, < 2)
12+
logger (>= 1.4.2)
713
minitest (>= 5.1)
14+
mutex_m
15+
securerandom (>= 0.3)
816
tzinfo (~> 2.0)
9-
zeitwerk (~> 2.3)
10-
addressable (2.8.7)
11-
public_suffix (>= 2.0.2, < 7.0)
17+
addressable (2.8.8)
18+
public_suffix (>= 2.0.2, < 8.0)
1219
base64 (0.2.0)
20+
benchmark (0.5.0)
21+
bigdecimal (3.3.1)
1322
coffee-script (2.4.1)
1423
coffee-script-source
1524
execjs
1625
coffee-script-source (1.12.2)
1726
colorator (1.1.0)
18-
commonmarker (0.23.11)
19-
concurrent-ruby (1.3.4)
20-
dnsruby (1.72.3)
27+
commonmarker (0.23.12)
28+
concurrent-ruby (1.3.6)
29+
connection_pool (2.5.5)
30+
dnsruby (1.72.4)
2131
base64 (~> 0.2.0)
32+
logger (~> 1.6.5)
2233
simpleidn (~> 0.2.1)
34+
drb (2.2.3)
2335
em-websocket (0.5.3)
2436
eventmachine (>= 0.12.9)
2537
http_parser.rb (~> 0)
26-
ethon (0.16.0)
38+
ethon (0.15.0)
2739
ffi (>= 1.15.0)
2840
eventmachine (1.2.7)
2941
execjs (2.10.0)
@@ -32,9 +44,7 @@ GEM
3244
faraday-net_http (>= 2.0, < 3.1)
3345
ruby2_keywords (>= 0.0.4)
3446
faraday-net_http (3.0.2)
35-
ffi (1.17.0)
36-
ffi (1.17.0-arm64-darwin)
37-
ffi (1.17.0-x86_64-darwin)
47+
ffi (1.17.2)
3848
forwardable-extended (2.6.0)
3949
gemoji (4.1.0)
4050
github-pages (231)
@@ -92,7 +102,7 @@ GEM
92102
activesupport (>= 2)
93103
nokogiri (>= 1.4)
94104
http_parser.rb (0.8.0)
95-
i18n (1.14.6)
105+
i18n (1.14.7)
96106
concurrent-ruby (~> 1.0)
97107
jekyll (3.9.5)
98108
addressable (~> 2.4)
@@ -210,17 +220,17 @@ GEM
210220
listen (3.9.0)
211221
rb-fsevent (~> 0.10, >= 0.10.3)
212222
rb-inotify (~> 0.9, >= 0.9.10)
223+
logger (1.6.6)
213224
mercenary (0.3.6)
225+
mini_portile2 (2.8.9)
214226
minima (2.5.1)
215227
jekyll (>= 3.5, < 5.0)
216228
jekyll-feed (~> 0.9)
217229
jekyll-seo-tag (~> 2.1)
218-
minitest (5.25.2)
219-
nokogiri (1.13.10-arm64-darwin)
220-
racc (~> 1.4)
221-
nokogiri (1.13.10-x86_64-darwin)
222-
racc (~> 1.4)
223-
nokogiri (1.13.10-x86_64-linux)
230+
minitest (5.26.1)
231+
mutex_m (0.3.0)
232+
nokogiri (1.15.7)
233+
mini_portile2 (~> 2.8.2)
224234
racc (~> 1.4)
225235
octokit (4.25.1)
226236
faraday (>= 1, < 3)
@@ -232,39 +242,35 @@ GEM
232242
rb-fsevent (0.11.2)
233243
rb-inotify (0.11.1)
234244
ffi (~> 1.0)
235-
rexml (3.3.9)
245+
rexml (3.4.4)
236246
rouge (3.30.0)
237247
ruby2_keywords (0.0.5)
238-
rubyzip (2.3.2)
248+
rubyzip (2.4.1)
239249
safe_yaml (1.0.5)
240250
sass (3.7.4)
241251
sass-listen (~> 4.0.0)
242252
sass-listen (4.0.0)
243253
rb-fsevent (~> 0.9, >= 0.9.4)
244254
rb-inotify (~> 0.9, >= 0.9.7)
245-
sawyer (0.9.2)
255+
sawyer (0.9.3)
246256
addressable (>= 2.3.5)
247257
faraday (>= 0.17.3, < 3)
258+
securerandom (0.3.2)
248259
simpleidn (0.2.3)
249260
terminal-table (1.8.0)
250261
unicode-display_width (~> 1.1, >= 1.1.1)
251-
typhoeus (1.4.1)
252-
ethon (>= 0.9.0)
262+
typhoeus (1.5.0)
263+
ethon (>= 0.9.0, < 0.16.0)
253264
tzinfo (2.0.6)
254265
concurrent-ruby (~> 1.0)
255266
unicode-display_width (1.8.0)
256-
zeitwerk (2.6.18)
257267

258268
PLATFORMS
259-
universal-darwin-22
260-
universal-darwin-23
261-
universal-darwin-24
262-
universal-darwin-25
263-
x86_64-linux
269+
ruby
264270

265271
DEPENDENCIES
266272
github-pages (>= 227)
267273
kramdown (>= 2.3.1)
268274

269275
BUNDLED WITH
270-
2.3.24
276+
2.1.4

_config.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
SELENIDE_VERSION: "7.12.2"
1+
SELENIDE_VERSION: "7.13.0"
22

33
# This is the default format.
44
# For more see: https://github.com/mojombo/jekyll/wiki/Permalinks

_includes/main_menu.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@
1919

2020
{% if page.show_news %}
2121
<div class="news">
22-
<div class="news-line news-title"><a href="https://github.com/selenide/selenide/milestone/234?closed=1">Released Selenide {{site.SELENIDE_VERSION}}</a></div>
23-
<div class="news-line news-link">Video recorder fixes</div>
22+
<div class="news-line news-title"><a href="/2025/12/14/selenide-{{site.SELENIDE_VERSION}}/">Released Selenide {{site.SELENIDE_VERSION}}</a></div>
23+
<div class="news-line news-link">Downloading clouds</div>
2424
</div>
2525
{% endif %}
2626

Lines changed: 184 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,184 @@
1+
---
2+
layout: post
3+
title: "Released Selenide 7.13.0"
4+
description: ""
5+
category:
6+
header-text: "Downloading clouds"
7+
tags: []
8+
---
9+
{% include JB/setup %}
10+
11+
Hello, coldies!
12+
13+
We've got a new release [Selenide 7.13.0](https://github.com/selenide/selenide/milestone/235?closed=1), let's start the unboxing!
14+
15+
<br>
16+
17+
* [Sped up downloading files from Selenium Grid](#improve-file-downloading-from-grid)
18+
* [Download doesn't wait too long if the link is not found](#fail-fast-if-download-link-not-found)
19+
* [Mask credentials in remote URL](#mask-credentials-in-remote-url)
20+
* [Added method `proxy.cleanupFilters()`](#proxy-cleanup-filters)
21+
* [Removed warning about response size](#remove-response-size-watchdog)
22+
* [Added prefix to all Selenide proxy filters](#add-prefix-to-selenide-own-filters)
23+
* [Fixed video rate](#fix-frame-rate-for-video)
24+
* [Upgraded Selenium from 4.38.0 to 4.39.0](#update-to-selenium-4.39.0)
25+
26+
<br>
27+
28+
### Sped up downloading files from Selenium Grid {#improve-file-downloading-from-grid}
29+
30+
Selenide has method `$.download()` that downloads a file in the browser, and returns this file.
31+
It's useful for testing all kinds of reports, Excel and PDF files etc.
32+
33+
> This is a highly non-trivial operation in itself.
34+
> Selenide implements several algorithms under the hood ([HTTPGET, PROXY, FOLDER, CDP](/2019/12/10/advent-calendar-download-files/)), each with its own pros and cons.
35+
> Not all of them, for example, work with a remote browser.
36+
37+
So, the FOLDER method hasn't worked well with Selenium Grid up until now, especially when the file being downloaded is large (say, over 100 MB).
38+
There was also no reliable way to wait for the download to complete.
39+
40+
Things got much better now:
41+
1. We can track download completion by file modification date (thanks to [PR 16589](https://github.com/SeleniumHQ/selenium/pull/16589)), and
42+
2. Downloading large files has been dramatically sped up (thanks to [PR 16627](https://github.com/SeleniumHQ/selenium/pull/16627)).
43+
44+
I tried downloading files up to 4 gigabytes from the grid – it flew off the server like a cannonball. :)
45+
46+
See [PR 3207](https://github.com/selenide/selenide/pull/3207).
47+
48+
<br>
49+
50+
### Download doesn't wait too long if the link is not found {#fail-fast-if-download-link-not-found}
51+
Another improvement for downloading large files.
52+
For such files, it's reasonable to set a long timeout but a small "increment timeout":
53+
54+
```java
55+
File pdf = $("#report").download(using(FOLDER)
56+
.withTimeout(ofMinutes(10))
57+
.withIncrementTimeout(ofSeconds(5))
58+
.withName("report.pdf"));
59+
```
60+
61+
In this case, the overall download timeout is 10 minutes,
62+
BUT if there are no changes in the download folder within 5 seconds, the method will immediately throw an error.
63+
64+
So, if the `#report` link wasn't found at all, the method would wait for 10 minutes.
65+
That's still too long if the locator was simply wrong.
66+
Now it will fail after 5 seconds.
67+
68+
See [issue 3175](https://github.com/selenide/selenide/issues/3175) and [PR 3212](https://github.com/selenide/selenide/pull/3212).
69+
70+
<br>
71+
72+
73+
### Mask credentials in remote URL {#mask-credentials-in-remote-url}
74+
75+
Getting back to the clouds.
76+
Selenide makes it easy to run a browser not only locally, but also "remotely," i.e., on another machine.
77+
On [Selenium Grid, BrowserStack, LambdaTest, Saucelabs, Selenoid, Moon](https://selenide.org/documentation/clouds.html), etc.
78+
79+
To do this, you just need to set the `remote` setting:
80+
```java
81+
Configuration.remote = "https://your-cloud-provider.com/wd/hub";
82+
```
83+
84+
Sometimes these clouds require authentication, and then the username-password can be written directly into the URL:
85+
```java
86+
Configuration.remote = "https://username:password@your-cloud-provider.com/wd/hub";
87+
```
88+
89+
The problem is that Selenide was writing this URL to the logs, exposing the credentials.
90+
91+
Now it will mask it:
92+
```java
93+
23:00:10:763 [main] DEBUG WebDriverFactory - Creating webdriver in thread 1:
94+
browser=chrome, browser.version=null, browser.size=1200x960,
95+
remote=http://***:***@localhost:43008/wd/hub
96+
```
97+
98+
See [issue 3210](https://github.com/selenide/selenide/issues/3210) and [PR 3213](https://github.com/selenide/selenide/pull/3213).
99+
100+
<br>
101+
102+
### Added method `proxy.cleanupFilters()` {#proxy-cleanup-filters}
103+
104+
This is convenient for removing any custom filters added by your tests.
105+
It was already possible with methods `proxy.removeRequestFilter(name)` and `proxy.removeResponseFilter(name)`,
106+
but now they can be removed more easily, without worrying about names. Simply at the end of each test:
107+
108+
```java
109+
@AfterEach final void done() {
110+
getSelenideProxy().cleanupFilters();
111+
}
112+
```
113+
114+
See [issue 3211](https://github.com/selenide/selenide/issues/3211) and [PR 3215](https://github.com/selenide/selenide/pull/3215).
115+
116+
<br>
117+
118+
119+
### Removed warning about response size {#remove-response-size-watchdog}
120+
121+
When you enable Selenide proxy, among other things, it monitors the size of the server requests or responses,
122+
and issues warnings if the size exceeds 2 MB. In the beginning, it seemed like a good idea, but now we've decided that it
123+
is not Selenide's responsibility. You probably have more suitable monitoring and optimization tools.
124+
And our proxy will work more efficiently without them.
125+
126+
If you really liked these warnings, you can add exactly the same filters to the proxy yourself, in your own tests.
127+
128+
See [PR 3215](https://github.com/selenide/selenide/pull/3215).
129+
130+
<br>
131+
132+
133+
### Added prefix to all Selenide proxy filters {#add-prefix-to-selenide-own-filters}
134+
135+
Selenide has a built-in proxy server that listens to traffic between the browser and the server, allowing you to do all sorts of interesting things with tests. Download files, bypass authentication, spoof server responses, and so on.
136+
137+
To do this, you can add your own filters to the proxy, each with its own unique name (so you can delete them later).
138+
Selenide has several filters, which we don't recommend deleting.
139+
140+
Now they will all have the same prefix "selenide.proxy.filter.", so you won't confuse them with your own.
141+
142+
See [issue 3211](https://github.com/selenide/selenide/issues/3211) and [PR 3215](https://github.com/selenide/selenide/pull/3215).
143+
144+
<br>
145+
146+
### Fixed video rate {#fix-frame-rate-for-video}
147+
148+
Selenide has its own [video recorder](/2024/11/24/selenide-7.6.0/#video-recorder), in which we recently found a tiny problem.
149+
It happened when you requested a high FPS, but had a slow browser.
150+
151+
For example, if you want to generate video with FPS=30, but the browser is slow enough, and can take only 10 screenshots per second,
152+
then the final video was 3 times faster than the reality. :)
153+
154+
The video should now be at normal speed.
155+
156+
See [issue 3189](https://github.com/selenide/selenide/discussions/3189) and [PR 3197](https://github.com/selenide/selenide/pull/3197).
157+
158+
<br>
159+
160+
### Upgraded Selenium from 4.38.0 to 4.39.0 {#update-to-selenium-4.39.0}
161+
Including CDP version update from v142 to v143.
162+
163+
This is a big deal for me personally, as many of my changes made it into this release, and all of them were useful in our release today:
164+
* [Download large files from Grid](https://github.com/SeleniumHQ/selenium/pull/16627)
165+
* [Show file modification time](https://github.com/SeleniumHQ/selenium/pull/16589)
166+
* [make augmentation of HasBiDi/HasDevTools lazy-loaded](https://github.com/SeleniumHQ/selenium/pull/16338)
167+
* [add BiDi method BrowsingContext.setViewport(null, null) to reset the mobile emulation mode](https://github.com/SeleniumHQ/selenium/pull/16524)
168+
* [unwrap double-wrapped webdriver](https://github.com/SeleniumHQ/selenium/pull/16575)
169+
* [Avoid logging debug logs with INFO level](https://github.com/SeleniumHQ/selenium/pull/16584)
170+
* [switch DevTools connection between tabs/windows](https://github.com/SeleniumHQ/selenium/pull/16647)
171+
172+
See [PR 3202](https://github.com/selenide/selenide/pull/3202)
173+
174+
<br>
175+
<br>
176+
177+
> Well then —
178+
> is the holiday already knocking on your door?
179+
180+
<br>
181+
182+
[Andrei Solntsev](http://asolntsev.github.io/)
183+
184+
selenide.org

start.sh

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
# otherwise Jekyll doesn't re-load users.json
22
rm -fr _site/users.html
33

4+
rvm use 2.7
5+
46
bundle exec jekyll serve --future --incremental --safe --strict_front_matter \
57
--host=0.0.0.0 --port=4001 \
68
--livereload --livereload-port=40001 \
79
--watch \
8-
--open-url
10+
--open-url

0 commit comments

Comments
 (0)