dasniko/testcontainers-keycloak (com.github.dasniko:testcontainers-keycloak)
### [`v3.3.0`](https://togithub.com/dasniko/testcontainers-keycloak/releases/tag/v3.3.0)
[Compare Source](https://togithub.com/dasniko/testcontainers-keycloak/compare/v3.2.0...v3.3.0)
Upgrade Keycloak dependencies to 24.0 and other dependencies to most recent versions.
testcontainers/testcontainers-java (org.testcontainers:junit-jupiter)
### [`v1.19.8`](https://togithub.com/testcontainers/testcontainers-java/releases/tag/1.19.8)
[Compare Source](https://togithub.com/testcontainers/testcontainers-java/compare/1.19.7...1.19.8)
### Testcontainers for Java 1.19.8
#### ๐ Features & Enhancements
- support backtick enquoting in SQL script splitter ([#8593](https://togithub.com/testcontainers/testcontainers-java/issues/8593)) [@peterhalicky](https://togithub.com/peterhalicky)
- \[localstack] Automatically add LAMBDA_DOCKER_FLAGS with testcontainers labels ([#8595](https://togithub.com/testcontainers/testcontainers-java/issues/8595)) [@dfangl](https://togithub.com/dfangl)
- \[qdrant] Allow to set key and config file ([#8556](https://togithub.com/testcontainers/testcontainers-java/issues/8556)) [@eddumelendez](https://togithub.com/eddumelendez)
- \[weaviate] Support new project container registry ([#8512](https://togithub.com/testcontainers/testcontainers-java/issues/8512)) [@ThomasVitale](https://togithub.com/ThomasVitale)
- \[kafka] Add support for `apache/kafka` ([#8416](https://togithub.com/testcontainers/testcontainers-java/issues/8416)) [@eddumelendez](https://togithub.com/eddumelendez)
- \[kafka] Skip starting zookeeper when using a Kafka container with the provided Zookeeper ([#8433](https://togithub.com/testcontainers/testcontainers-java/issues/8433)) [@silh](https://togithub.com/silh)
- Use Awaitility to Poll the Image Pull ([#8453](https://togithub.com/testcontainers/testcontainers-java/issues/8453)) [@JKomoroski](https://togithub.com/JKomoroski)
- Avoid usage of the non monotonic clock System.currentTimeMillis() in favor of System.nanoTime() ([#6392](https://togithub.com/testcontainers/testcontainers-java/issues/6392)) [@Nateckert](https://togithub.com/Nateckert)
- Fix DateTimeParseException when created is not set in image config ([#8302](https://togithub.com/testcontainers/testcontainers-java/issues/8302)) [@SgtSilvio](https://togithub.com/SgtSilvio)
- \[redpanda] Override entrypoint ([#8450](https://togithub.com/testcontainers/testcontainers-java/issues/8450)) [@eddumelendez](https://togithub.com/eddumelendez)
- \[weaviae] Add method for getting gRPC port ([#8431](https://togithub.com/testcontainers/testcontainers-java/issues/8431)) [@antas-marcin](https://togithub.com/antas-marcin)
- \[clickhouse] Add `getDatabaseName()` method ([#8339](https://togithub.com/testcontainers/testcontainers-java/issues/8339)) [@colin-lee](https://togithub.com/colin-lee)
#### ๐ Bug Fixes
- Pass env to ComposeDelegate in DockerComposeContainer#stop ([#8493](https://togithub.com/testcontainers/testcontainers-java/issues/8493)) [@mmusenbr](https://togithub.com/mmusenbr)
#### ๐ Documentation
#### ๐งน Housekeeping
- Add Weaviate module tests with modules ([#8481](https://togithub.com/testcontainers/testcontainers-java/issues/8481)) [@antas-marcin](https://togithub.com/antas-marcin)
- Update alpine image version to 3.17 ([#8476](https://togithub.com/testcontainers/testcontainers-java/issues/8476)) [@eddumelendez](https://togithub.com/eddumelendez)
- fix getConnectionString javadoc ([#8129](https://togithub.com/testcontainers/testcontainers-java/issues/8129)) [@gabrielluciano](https://togithub.com/gabrielluciano)
#### ๐ฆ Dependency updates
- Move to gradle/actions/wrapper-validation ([#8559](https://togithub.com/testcontainers/testcontainers-java/issues/8559)) [@eddumelendez](https://togithub.com/eddumelendez)
- upgrade to github actions setup-java v4 ([#8475](https://togithub.com/testcontainers/testcontainers-java/issues/8475)) [@sullis](https://togithub.com/sullis)
- Update ryuk version to 0.7.0 ([#8451](https://togithub.com/testcontainers/testcontainers-java/issues/8451)) [@eddumelendez](https://togithub.com/eddumelendez)
- chore: use new sshd:1.2.0 image ([#8574](https://togithub.com/testcontainers/testcontainers-java/issues/8574)) [@mdelapenya](https://togithub.com/mdelapenya)
### [`v1.19.7`](https://togithub.com/testcontainers/testcontainers-java/releases/tag/1.19.7)
[Compare Source](https://togithub.com/testcontainers/testcontainers-java/compare/1.19.6...1.19.7)
### Testcontainers for Java 1.19.7
### Modules
- New K6 module ([#8318](https://togithub.com/testcontainers/testcontainers-java/issues/8318)) [@javaducky](https://togithub.com/javaducky)
- New OceanBase module ([#7502](https://togithub.com/testcontainers/testcontainers-java/issues/7502)) [@whhe](https://togithub.com/whhe)
- New Ollama module ([#8369](https://togithub.com/testcontainers/testcontainers-java/issues/8369)) [@eddumelendez](https://togithub.com/eddumelendez)
- New OpenFGA module ([#8371](https://togithub.com/testcontainers/testcontainers-java/issues/8371)) [@eddumelendez](https://togithub.com/eddumelendez)
### Elasticserach
- Enable lazy certificates for Elasticsearch ([#7991](https://togithub.com/testcontainers/testcontainers-java/issues/7991)) [@pioorg](https://togithub.com/pioorg)
##### HiveMQ
- Fix wrong permission setup for HiveMQ container ([#8399](https://togithub.com/testcontainers/testcontainers-java/issues/8399)) [@SgtSilvio](https://togithub.com/SgtSilvio)
##### MongoDB
- Support mongodb/mongodb-community-server and mongodb/mongodb-enterprise-server ([#8386](https://togithub.com/testcontainers/testcontainers-java/issues/8386)) [@eddumelendez](https://togithub.com/eddumelendez)
##### PostgreSQL
- Add pgvector/pgvector as a compatible image ([#7898](https://togithub.com/testcontainers/testcontainers-java/issues/7898)) ([#8401](https://togithub.com/testcontainers/testcontainers-java/issues/8401)) [@eddumelendez](https://togithub.com/eddumelendez)
#### ๐ Documentation
- Improve Ollama docs ([#8417](https://togithub.com/testcontainers/testcontainers-java/issues/8417)) [@eddumelendez](https://togithub.com/eddumelendez)
- openfga.md: fix typo in docker hub link ([#8400](https://togithub.com/testcontainers/testcontainers-java/issues/8400)) [@rpalcolea](https://togithub.com/rpalcolea)
#### ๐ฆ Dependency updates
- Update docker-java version to 3.3.6 ([#8410](https://togithub.com/testcontainers/testcontainers-java/issues/8410)) [@eddumelendez](https://togithub.com/eddumelendez)
microsoft/playwright-java (com.microsoft.playwright:playwright)
### [`v1.44.0`](https://togithub.com/microsoft/playwright-java/releases/tag/v1.44.0)
[Compare Source](https://togithub.com/microsoft/playwright-java/compare/v1.43.0...v1.44.0)
#### New APIs
**Accessibility assertions**
- [assertThat(locator).toHaveAccessibleName()](https://playwright.dev/java/docs/api/class-locatorassertions#locator-assertions-to-have-accessible-name) checks if the element has the specified accessible name:
```java
Locator locator = page.getByRole(AriaRole.BUTTON);
assertThat(locator).hasAccessibleName("Submit");
```
- [assertThat(locator).toHaveAccessibleDescription()](https://playwright.dev/java/docs/api/class-locatorassertions#locator-assertions-to-have-accessible-description) checks if the element has the specified accessible description:
```java
Locator locator = page.getByRole(AriaRole.BUTTON);
assertThat(locator).hasAccessibleDescription("Upload a photo");
```
- [assertThat(locator).toHaveRole()](https://playwright.dev/java/docs/api/class-locatorassertions#locator-assertions-to-have-role) checks if the element has the specified ARIA role:
```java
Locator locator = page.getByTestId("save-button");
assertThat(locator).hasRole(AriaRole.BUTTON);
```
**Locator handler**
- After executing the handler added with [page.addLocatorHandler()](https://playwright.dev/java/docs/api/class-page#page-add-locator-handler), Playwright will now wait until the overlay that triggered the handler is not visible anymore. You can opt-out of this behavior with the new `setNoWaitAfter` option.
- You can use new `setTimes` option in [page.addLocatorHandler()](https://playwright.dev/java/docs/api/class-page#page-add-locator-handler) to specify maximum number of times the handler should be run.
- The handler in [page.addLocatorHandler()](https://playwright.dev/java/docs/api/class-page#page-add-locator-handler) now accepts the locator as argument.
- New [page.removeLocatorHandler()](https://playwright.dev/java/docs/api/class-page#page-remove-locator-handler) method for removing previously added locator handlers.
```java
Locator locator = page.getByText("This interstitial covers the button");
page.addLocatorHandler(locator, overlay -> {
overlay.locator("#close").click();
}, new Page.AddLocatorHandlerOptions().setTimes(3).setNoWaitAfter(true));
// Run your tests that can be interrupted by the overlay.
// ...
page.removeLocatorHandler(locator);
```
**Miscellaneous options**
- New method [formData.append()](https://playwright.dev/java/docs/api/class-formdata#form-data-append) allows to specify repeating fields with the same name in [`setMultipart`](https://playwright.dev/java/docs/api/class-requestoptions#request-options-set-multipart) option in `RequestOptions`:
```java
FormData formData = FormData.create();
formData.append("file", new FilePayload("f1.js", "text/javascript",
"var x = 2024;".getBytes(StandardCharsets.UTF_8)));
formData.append("file", new FilePayload("f2.txt", "text/plain",
"hello".getBytes(StandardCharsets.UTF_8)));
APIResponse response = context.request().post("https://example.com/uploadFile", RequestOptions.create().setMultipart(formData));
```
- `expect(page).toHaveURL(url)` now supports `setIgnoreCase` [option](https://playwright.dev/java/docs/api/class-pageassertions#page-assertions-to-have-url-option-ignore-case).
#### Browser Versions
- Chromium 125.0.6422.14
- Mozilla Firefox 125.0.1
- WebKit 17.4
This version was also tested against the following stable channels:
- Google Chrome 124
- Microsoft Edge 124
### [`v1.43.0`](https://togithub.com/microsoft/playwright-java/releases/tag/v1.43.0)
[Compare Source](https://togithub.com/microsoft/playwright-java/compare/v1.42.0...v1.43.0)
#### New APIs
- Method [browserContext.clearCookies(\[options\])](https://playwright.dev/java/docs/api/class-browsercontext#browser-context-clear-cookies) now supports filters to remove only some cookies.
```java
// Clear all cookies.
context.clearCookies();
// New: clear cookies with a particular name.
context.clearCookies(new BrowserContext.ClearCookiesOptions().setName("session-id"));
// New: clear cookies for a particular domain.
context.clearCookies(new BrowserContext.ClearCookiesOptions().setDomain("my-origin.com"));
```
- New method [locator.contentFrame()](https://playwright.dev/java/docs/api/class-locator#locator-content-frame) converts a [Locator](https://playwright.dev/java/docs/api/class-locator) object to a [FrameLocator](https://playwright.dev/java/docs/api/class-framelocator). This can be useful when you have a [Locator](https://playwright.dev/java/docs/api/class-locator) object obtained somewhere, and later on would like to interact with the content inside the frame.
```java
Locator locator = page.locator("iframe[name='embedded']");
// ...
FrameLocator frameLocator = locator.contentFrame();
frameLocator.getByRole(AriaRole.BUTTON).click();
```
- New method [frameLocator.owner()](https://playwright.dev/java/docs/api/class-framelocator#frame-locator-owner) converts a [FrameLocator](https://playwright.dev/java/docs/api/class-framelocator) object to a [Locator](https://playwright.dev/java/docs/api/class-locator). This can be useful when you have a [FrameLocator](https://playwright.dev/java/docs/api/class-framelocator) object obtained somewhere, and later on would like to interact with the `iframe` element.
```java
FrameLocator frameLocator = page.frameLocator("iframe[name='embedded']");
// ...
Locator locator = frameLocator.owner();
assertThat(locator).isVisible();
```
#### Browser Versions
- Chromium 124.0.6367.8
- Mozilla Firefox 124.0
- WebKit 17.4
This version was also tested against the following stable channels:
- Google Chrome 123
- Microsoft Edge 123
### [`v1.42.0`](https://togithub.com/microsoft/playwright-java/releases/tag/v1.42.0)
[Compare Source](https://togithub.com/microsoft/playwright-java/compare/v1.41.2...v1.42.0)
#### JUnit integration
> \[!WARNING]
> This feature is experimental, we are actively looking for the feedback based on your scenarios.
Add new [`@UsePlaywright`](https://playwright.dev/java/docs/junit) annotation to your test classes to start using Playwright
fixtures for [Page](https://playwright.dev/java/docs/api/class-page), [BrowserContext](https://playwright.dev/java/docs/api/class-browsercontext), [Browser](https://playwright.dev/java/docs/api/class-browser), [APIRequestContext](https://playwright.dev/java/docs/api/class-apirequestcontext) and [Playwright](https://playwright.dev/java/docs/api/class-playwright) in the
test methods.
```java
package org.example;
import com.microsoft.playwright.Page;
import com.microsoft.playwright.junit.UsePlaywright;
import org.junit.jupiter.api.Test;
import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertEquals;
@UsePlaywright
public class TestExample {
void shouldNavigateToInstallationGuide(Page page) {
page.navigate("https://playwright.dev/java/");
page.getByRole(AriaRole.LINK, new Page.GetByRoleOptions().setName("Docs")).click();
assertThat(page.getByRole(AriaRole.HEADING, new Page.GetByRoleOptions().setName("Installation"))).isVisible();
}
@Test
void shouldCheckTheBox(Page page) {
page.setContent("");
page.locator("input").check();
assertEquals(true, page.evaluate("window['checkbox'].checked"));
}
@Test
void shouldSearchWiki(Page page) {
page.navigate("https://www.wikipedia.org/");
page.locator("input[name=\"search\"]").click();
page.locator("input[name=\"search\"]").fill("playwright");
page.locator("input[name=\"search\"]").press("Enter");
assertThat(page).hasURL("https://en.wikipedia.org/wiki/Playwright");
}
}
```
In the example above, all three test methods use the same [Browser](https://playwright.dev/java/docs/api/class-browser). Each test
uses its own [BrowserContext](https://playwright.dev/java/docs/api/class-browsercontext) and [Page](https://playwright.dev/java/docs/api/class-page).
**Custom options**
Implement your own `OptionsFactory` to initialize the fixtures with custom configuration.
```java
import com.microsoft.playwright.junit.Options;
import com.microsoft.playwright.junit.OptionsFactory;
import com.microsoft.playwright.junit.UsePlaywright;
@UsePlaywright(MyTest.CustomOptions.class)
public class MyTest {
public static class CustomOptions implements OptionsFactory {
@Override
public Options getOptions() {
return new Options()
.setHeadless(false)
.setContextOption(new Browser.NewContextOptions()
.setBaseURL("https://github.com"))
.setApiRequestOptions(new APIRequest.NewContextOptions()
.setBaseURL("https://playwright.dev"));
}
}
@Test
public void testWithCustomOptions(Page page, APIRequestContext request) {
page.navigate("/");
assertThat(page).hasURL(Pattern.compile("github"));
APIResponse response = request.get("/");
assertTrue(response.text().contains("Playwright"));
}
}
```
Learn more about the fixtures in our [JUnit guide](https://playwright.dev/java/docs/junit).
#### New Locator Handler
New method [page.addLocatorHandler(locator, handler, handler, handler)](https://playwright.dev/java/docs/api/class-page#page-add-locator-handler) registers a callback that will be invoked when specified element becomes visible and may block Playwright actions. The callback can get rid of the overlay. Here is an example that closes a cookie dialog when it appears.
```java
// Setup the handler.
page.addLocatorHandler(
page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Hej! You are in control of your cookies.")),
() - > {
page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Accept all")).click();
});
// Write the test as usual.
page.navigate("https://www.ikea.com/");
page.getByRole(AriaRole.LINK, new Page.GetByRoleOptions().setName("Collection of blue and white")).click();
assertThat(page.getByRole(AriaRole.HEADING, new Page.GetByRoleOptions().setName("Light and easy"))).isVisible();
```
#### New APIs
- [page.pdf()](https://playwright.dev/java/docs/api/class-page#page-pdf) accepts two new options `tagged` and `outline`.
#### Announcements
- โ ๏ธ Ubuntu 18 is not supported anymore.
#### Browser Versions
- Chromium 123.0.6312.4
- Mozilla Firefox 123.0
- WebKit 17.4
This version was also tested against the following stable channels:
- Google Chrome 122
- Microsoft Edge 123
projectlombok/lombok (org.projectlombok:lombok)
### [`v1.18.32`](https://togithub.com/projectlombok/lombok/compare/v1.18.30...v1.18.32)
keycloak/keycloak (org.keycloak:keycloak-admin-client)
### [`v24.0.5`](https://togithub.com/keycloak/keycloak/releases/tag/24.0.5)
[Compare Source](https://togithub.com/keycloak/keycloak/compare/24.0.4...24.0.5)
Highlights
Security issue with PAR clients using client_secret_post based authentication
This release contains the fix of the important security issue affecting some OIDC confidential clients using PAR (Pushed authorization request). In case you use OIDC confidential clients together
with PAR and you use client authentication based on client_id and client_secret sent as parameters in the HTTP request body (method client_secret_post specified in the OIDC specification), it is
highly encouraged to rotate the client secrets of your clients after upgrading to this version.
Upgrading
Before upgrading refer to the migration guide for a complete list of changes.
All resolved issues
Enhancements
#29073 Use cache.compute() method to improve the replace retry loop
#29280 Update Create Realm in Keycloak 24 Getting Started
Bugs
#29129 JGroups creates log messages as it switched internally to "trace" dist/quarkus
#29206 LDAP user creation reports error but user is created ldap
#29314 Clicking the "save" button multiple times in the Saml IDP configuration page corrupts the value of "AuthnContext ClassRefs" admin/ui
#29458 Empty CSP header value breaks security filter authentication
#29471 Cypress tests store videos even for passing tests ci
Partial update to user attributes when updating users through the Admin User API is no longer supported
When updating user attributes through the Admin User API, you cannot execute partial updates when updating the
user attributes, including the root attributes like username, email, firstName, and lastName.
#23701 Attribute search does not work with federated users with ldap. admin/ui
#23980 Keycloak Operator fails to install realm authentication flow because "flow is null" import-export
#25490 Partial export/import is not mentioned in Keycloak's Server Administration Guide docs
#25687 A java.lang.NullPointerException occurs when sending a Multipart/form-data request to any file upload interface. admin/api
#26396 How do you update a custom user storage provider jar that includes a version number? dist/quarkus
#27117 user sessions not accessible in all cluster nodes infinispan
#27180 Grant type "urn:ietf:params:oauth:grant-type:uma-ticket" openid-connect/token service endpoint is returning refresh token with invalid Expiration authorization-services
#27228 Lowercased "terms_and_conditions" is not migrated in fed_user_required_action table core
#27245 Account console does not correctly treat link / unlink account account/ui
#27269 mvnw clean install -Pdistribution on Windows deletes necessary files during clean of org.keycloak:keycloak-admin-ui admin/ui
#27275 Invalidating offline token is not working from client sessions tab authentication
#27366 Social login - test failures with unexpected status code testsuite
This PR contains the following updates:
3.5.2
->3.6.0
3.12.1
->3.13.0
3.2.0
->3.3.1
1.19.6
->1.19.8
3.25.3
->3.26.0
1.41.2
->1.44.0
1.18.30
->1.18.32
24.0.1
->24.0.5
24.0.1
->24.0.5
24.0.1
->24.0.5
24.0.1
->24.0.5
24.0.1
->24.0.5
Release Notes
dasniko/testcontainers-keycloak (com.github.dasniko:testcontainers-keycloak)
### [`v3.3.0`](https://togithub.com/dasniko/testcontainers-keycloak/releases/tag/v3.3.0) [Compare Source](https://togithub.com/dasniko/testcontainers-keycloak/compare/v3.2.0...v3.3.0) Upgrade Keycloak dependencies to 24.0 and other dependencies to most recent versions.testcontainers/testcontainers-java (org.testcontainers:junit-jupiter)
### [`v1.19.8`](https://togithub.com/testcontainers/testcontainers-java/releases/tag/1.19.8) [Compare Source](https://togithub.com/testcontainers/testcontainers-java/compare/1.19.7...1.19.8) ### Testcontainers for Java 1.19.8 #### ๐ Features & Enhancements - support backtick enquoting in SQL script splitter ([#8593](https://togithub.com/testcontainers/testcontainers-java/issues/8593)) [@peterhalicky](https://togithub.com/peterhalicky) - \[localstack] Automatically add LAMBDA_DOCKER_FLAGS with testcontainers labels ([#8595](https://togithub.com/testcontainers/testcontainers-java/issues/8595)) [@dfangl](https://togithub.com/dfangl) - \[qdrant] Allow to set key and config file ([#8556](https://togithub.com/testcontainers/testcontainers-java/issues/8556)) [@eddumelendez](https://togithub.com/eddumelendez) - \[weaviate] Support new project container registry ([#8512](https://togithub.com/testcontainers/testcontainers-java/issues/8512)) [@ThomasVitale](https://togithub.com/ThomasVitale) - \[kafka] Add support for `apache/kafka` ([#8416](https://togithub.com/testcontainers/testcontainers-java/issues/8416)) [@eddumelendez](https://togithub.com/eddumelendez) - \[kafka] Skip starting zookeeper when using a Kafka container with the provided Zookeeper ([#8433](https://togithub.com/testcontainers/testcontainers-java/issues/8433)) [@silh](https://togithub.com/silh) - Use Awaitility to Poll the Image Pull ([#8453](https://togithub.com/testcontainers/testcontainers-java/issues/8453)) [@JKomoroski](https://togithub.com/JKomoroski) - Avoid usage of the non monotonic clock System.currentTimeMillis() in favor of System.nanoTime() ([#6392](https://togithub.com/testcontainers/testcontainers-java/issues/6392)) [@Nateckert](https://togithub.com/Nateckert) - Fix DateTimeParseException when created is not set in image config ([#8302](https://togithub.com/testcontainers/testcontainers-java/issues/8302)) [@SgtSilvio](https://togithub.com/SgtSilvio) - \[redpanda] Override entrypoint ([#8450](https://togithub.com/testcontainers/testcontainers-java/issues/8450)) [@eddumelendez](https://togithub.com/eddumelendez) - \[weaviae] Add method for getting gRPC port ([#8431](https://togithub.com/testcontainers/testcontainers-java/issues/8431)) [@antas-marcin](https://togithub.com/antas-marcin) - \[clickhouse] Add `getDatabaseName()` method ([#8339](https://togithub.com/testcontainers/testcontainers-java/issues/8339)) [@colin-lee](https://togithub.com/colin-lee) #### ๐ Bug Fixes - Pass env to ComposeDelegate in DockerComposeContainer#stop ([#8493](https://togithub.com/testcontainers/testcontainers-java/issues/8493)) [@mmusenbr](https://togithub.com/mmusenbr) #### ๐ Documentation #### ๐งน Housekeeping - Add Weaviate module tests with modules ([#8481](https://togithub.com/testcontainers/testcontainers-java/issues/8481)) [@antas-marcin](https://togithub.com/antas-marcin) - Update alpine image version to 3.17 ([#8476](https://togithub.com/testcontainers/testcontainers-java/issues/8476)) [@eddumelendez](https://togithub.com/eddumelendez) - fix getConnectionString javadoc ([#8129](https://togithub.com/testcontainers/testcontainers-java/issues/8129)) [@gabrielluciano](https://togithub.com/gabrielluciano) #### ๐ฆ Dependency updates - Move to gradle/actions/wrapper-validation ([#8559](https://togithub.com/testcontainers/testcontainers-java/issues/8559)) [@eddumelendez](https://togithub.com/eddumelendez) - upgrade to github actions setup-java v4 ([#8475](https://togithub.com/testcontainers/testcontainers-java/issues/8475)) [@sullis](https://togithub.com/sullis) - Update ryuk version to 0.7.0 ([#8451](https://togithub.com/testcontainers/testcontainers-java/issues/8451)) [@eddumelendez](https://togithub.com/eddumelendez) - chore: use new sshd:1.2.0 image ([#8574](https://togithub.com/testcontainers/testcontainers-java/issues/8574)) [@mdelapenya](https://togithub.com/mdelapenya) ### [`v1.19.7`](https://togithub.com/testcontainers/testcontainers-java/releases/tag/1.19.7) [Compare Source](https://togithub.com/testcontainers/testcontainers-java/compare/1.19.6...1.19.7) ### Testcontainers for Java 1.19.7 ### Modules - New K6 module ([#8318](https://togithub.com/testcontainers/testcontainers-java/issues/8318)) [@javaducky](https://togithub.com/javaducky) - New OceanBase module ([#7502](https://togithub.com/testcontainers/testcontainers-java/issues/7502)) [@whhe](https://togithub.com/whhe) - New Ollama module ([#8369](https://togithub.com/testcontainers/testcontainers-java/issues/8369)) [@eddumelendez](https://togithub.com/eddumelendez) - New OpenFGA module ([#8371](https://togithub.com/testcontainers/testcontainers-java/issues/8371)) [@eddumelendez](https://togithub.com/eddumelendez) ### Elasticserach - Enable lazy certificates for Elasticsearch ([#7991](https://togithub.com/testcontainers/testcontainers-java/issues/7991)) [@pioorg](https://togithub.com/pioorg) ##### HiveMQ - Fix wrong permission setup for HiveMQ container ([#8399](https://togithub.com/testcontainers/testcontainers-java/issues/8399)) [@SgtSilvio](https://togithub.com/SgtSilvio) ##### MongoDB - Support mongodb/mongodb-community-server and mongodb/mongodb-enterprise-server ([#8386](https://togithub.com/testcontainers/testcontainers-java/issues/8386)) [@eddumelendez](https://togithub.com/eddumelendez) ##### PostgreSQL - Add pgvector/pgvector as a compatible image ([#7898](https://togithub.com/testcontainers/testcontainers-java/issues/7898)) ([#8401](https://togithub.com/testcontainers/testcontainers-java/issues/8401)) [@eddumelendez](https://togithub.com/eddumelendez) #### ๐ Documentation - Improve Ollama docs ([#8417](https://togithub.com/testcontainers/testcontainers-java/issues/8417)) [@eddumelendez](https://togithub.com/eddumelendez) - openfga.md: fix typo in docker hub link ([#8400](https://togithub.com/testcontainers/testcontainers-java/issues/8400)) [@rpalcolea](https://togithub.com/rpalcolea) #### ๐ฆ Dependency updates - Update docker-java version to 3.3.6 ([#8410](https://togithub.com/testcontainers/testcontainers-java/issues/8410)) [@eddumelendez](https://togithub.com/eddumelendez)microsoft/playwright-java (com.microsoft.playwright:playwright)
### [`v1.44.0`](https://togithub.com/microsoft/playwright-java/releases/tag/v1.44.0) [Compare Source](https://togithub.com/microsoft/playwright-java/compare/v1.43.0...v1.44.0) #### New APIs **Accessibility assertions** - [assertThat(locator).toHaveAccessibleName()](https://playwright.dev/java/docs/api/class-locatorassertions#locator-assertions-to-have-accessible-name) checks if the element has the specified accessible name: ```java Locator locator = page.getByRole(AriaRole.BUTTON); assertThat(locator).hasAccessibleName("Submit"); ``` - [assertThat(locator).toHaveAccessibleDescription()](https://playwright.dev/java/docs/api/class-locatorassertions#locator-assertions-to-have-accessible-description) checks if the element has the specified accessible description: ```java Locator locator = page.getByRole(AriaRole.BUTTON); assertThat(locator).hasAccessibleDescription("Upload a photo"); ``` - [assertThat(locator).toHaveRole()](https://playwright.dev/java/docs/api/class-locatorassertions#locator-assertions-to-have-role) checks if the element has the specified ARIA role: ```java Locator locator = page.getByTestId("save-button"); assertThat(locator).hasRole(AriaRole.BUTTON); ``` **Locator handler** - After executing the handler added with [page.addLocatorHandler()](https://playwright.dev/java/docs/api/class-page#page-add-locator-handler), Playwright will now wait until the overlay that triggered the handler is not visible anymore. You can opt-out of this behavior with the new `setNoWaitAfter` option. - You can use new `setTimes` option in [page.addLocatorHandler()](https://playwright.dev/java/docs/api/class-page#page-add-locator-handler) to specify maximum number of times the handler should be run. - The handler in [page.addLocatorHandler()](https://playwright.dev/java/docs/api/class-page#page-add-locator-handler) now accepts the locator as argument. - New [page.removeLocatorHandler()](https://playwright.dev/java/docs/api/class-page#page-remove-locator-handler) method for removing previously added locator handlers. ```java Locator locator = page.getByText("This interstitial covers the button"); page.addLocatorHandler(locator, overlay -> { overlay.locator("#close").click(); }, new Page.AddLocatorHandlerOptions().setTimes(3).setNoWaitAfter(true)); // Run your tests that can be interrupted by the overlay. // ... page.removeLocatorHandler(locator); ``` **Miscellaneous options** - New method [formData.append()](https://playwright.dev/java/docs/api/class-formdata#form-data-append) allows to specify repeating fields with the same name in [`setMultipart`](https://playwright.dev/java/docs/api/class-requestoptions#request-options-set-multipart) option in `RequestOptions`: ```java FormData formData = FormData.create(); formData.append("file", new FilePayload("f1.js", "text/javascript", "var x = 2024;".getBytes(StandardCharsets.UTF_8))); formData.append("file", new FilePayload("f2.txt", "text/plain", "hello".getBytes(StandardCharsets.UTF_8))); APIResponse response = context.request().post("https://example.com/uploadFile", RequestOptions.create().setMultipart(formData)); ``` - `expect(page).toHaveURL(url)` now supports `setIgnoreCase` [option](https://playwright.dev/java/docs/api/class-pageassertions#page-assertions-to-have-url-option-ignore-case). #### Browser Versions - Chromium 125.0.6422.14 - Mozilla Firefox 125.0.1 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 124 - Microsoft Edge 124 ### [`v1.43.0`](https://togithub.com/microsoft/playwright-java/releases/tag/v1.43.0) [Compare Source](https://togithub.com/microsoft/playwright-java/compare/v1.42.0...v1.43.0) #### New APIs - Method [browserContext.clearCookies(\[options\])](https://playwright.dev/java/docs/api/class-browsercontext#browser-context-clear-cookies) now supports filters to remove only some cookies. ```java // Clear all cookies. context.clearCookies(); // New: clear cookies with a particular name. context.clearCookies(new BrowserContext.ClearCookiesOptions().setName("session-id")); // New: clear cookies for a particular domain. context.clearCookies(new BrowserContext.ClearCookiesOptions().setDomain("my-origin.com")); ``` - New method [locator.contentFrame()](https://playwright.dev/java/docs/api/class-locator#locator-content-frame) converts a [Locator](https://playwright.dev/java/docs/api/class-locator) object to a [FrameLocator](https://playwright.dev/java/docs/api/class-framelocator). This can be useful when you have a [Locator](https://playwright.dev/java/docs/api/class-locator) object obtained somewhere, and later on would like to interact with the content inside the frame. ```java Locator locator = page.locator("iframe[name='embedded']"); // ... FrameLocator frameLocator = locator.contentFrame(); frameLocator.getByRole(AriaRole.BUTTON).click(); ``` - New method [frameLocator.owner()](https://playwright.dev/java/docs/api/class-framelocator#frame-locator-owner) converts a [FrameLocator](https://playwright.dev/java/docs/api/class-framelocator) object to a [Locator](https://playwright.dev/java/docs/api/class-locator). This can be useful when you have a [FrameLocator](https://playwright.dev/java/docs/api/class-framelocator) object obtained somewhere, and later on would like to interact with the `iframe` element. ```java FrameLocator frameLocator = page.frameLocator("iframe[name='embedded']"); // ... Locator locator = frameLocator.owner(); assertThat(locator).isVisible(); ``` #### Browser Versions - Chromium 124.0.6367.8 - Mozilla Firefox 124.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 123 - Microsoft Edge 123 ### [`v1.42.0`](https://togithub.com/microsoft/playwright-java/releases/tag/v1.42.0) [Compare Source](https://togithub.com/microsoft/playwright-java/compare/v1.41.2...v1.42.0) #### JUnit integration > \[!WARNING] > This feature is experimental, we are actively looking for the feedback based on your scenarios. Add new [`@UsePlaywright`](https://playwright.dev/java/docs/junit) annotation to your test classes to start using Playwright fixtures for [Page](https://playwright.dev/java/docs/api/class-page), [BrowserContext](https://playwright.dev/java/docs/api/class-browsercontext), [Browser](https://playwright.dev/java/docs/api/class-browser), [APIRequestContext](https://playwright.dev/java/docs/api/class-apirequestcontext) and [Playwright](https://playwright.dev/java/docs/api/class-playwright) in the test methods. ```java package org.example; import com.microsoft.playwright.Page; import com.microsoft.playwright.junit.UsePlaywright; import org.junit.jupiter.api.Test; import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat; import static org.junit.jupiter.api.Assertions.assertEquals; @UsePlaywright public class TestExample { void shouldNavigateToInstallationGuide(Page page) { page.navigate("https://playwright.dev/java/"); page.getByRole(AriaRole.LINK, new Page.GetByRoleOptions().setName("Docs")).click(); assertThat(page.getByRole(AriaRole.HEADING, new Page.GetByRoleOptions().setName("Installation"))).isVisible(); } @Test void shouldCheckTheBox(Page page) { page.setContent(""); page.locator("input").check(); assertEquals(true, page.evaluate("window['checkbox'].checked")); } @Test void shouldSearchWiki(Page page) { page.navigate("https://www.wikipedia.org/"); page.locator("input[name=\"search\"]").click(); page.locator("input[name=\"search\"]").fill("playwright"); page.locator("input[name=\"search\"]").press("Enter"); assertThat(page).hasURL("https://en.wikipedia.org/wiki/Playwright"); } } ``` In the example above, all three test methods use the same [Browser](https://playwright.dev/java/docs/api/class-browser). Each test uses its own [BrowserContext](https://playwright.dev/java/docs/api/class-browsercontext) and [Page](https://playwright.dev/java/docs/api/class-page). **Custom options** Implement your own `OptionsFactory` to initialize the fixtures with custom configuration. ```java import com.microsoft.playwright.junit.Options; import com.microsoft.playwright.junit.OptionsFactory; import com.microsoft.playwright.junit.UsePlaywright; @UsePlaywright(MyTest.CustomOptions.class) public class MyTest { public static class CustomOptions implements OptionsFactory { @Override public Options getOptions() { return new Options() .setHeadless(false) .setContextOption(new Browser.NewContextOptions() .setBaseURL("https://github.com")) .setApiRequestOptions(new APIRequest.NewContextOptions() .setBaseURL("https://playwright.dev")); } } @Test public void testWithCustomOptions(Page page, APIRequestContext request) { page.navigate("/"); assertThat(page).hasURL(Pattern.compile("github")); APIResponse response = request.get("/"); assertTrue(response.text().contains("Playwright")); } } ``` Learn more about the fixtures in our [JUnit guide](https://playwright.dev/java/docs/junit). #### New Locator Handler New method [page.addLocatorHandler(locator, handler, handler, handler)](https://playwright.dev/java/docs/api/class-page#page-add-locator-handler) registers a callback that will be invoked when specified element becomes visible and may block Playwright actions. The callback can get rid of the overlay. Here is an example that closes a cookie dialog when it appears. ```java // Setup the handler. page.addLocatorHandler( page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Hej! You are in control of your cookies.")), () - > { page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Accept all")).click(); }); // Write the test as usual. page.navigate("https://www.ikea.com/"); page.getByRole(AriaRole.LINK, new Page.GetByRoleOptions().setName("Collection of blue and white")).click(); assertThat(page.getByRole(AriaRole.HEADING, new Page.GetByRoleOptions().setName("Light and easy"))).isVisible(); ``` #### New APIs - [page.pdf()](https://playwright.dev/java/docs/api/class-page#page-pdf) accepts two new options `tagged` and `outline`. #### Announcements - โ ๏ธ Ubuntu 18 is not supported anymore. #### Browser Versions - Chromium 123.0.6312.4 - Mozilla Firefox 123.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 122 - Microsoft Edge 123projectlombok/lombok (org.projectlombok:lombok)
### [`v1.18.32`](https://togithub.com/projectlombok/lombok/compare/v1.18.30...v1.18.32)keycloak/keycloak (org.keycloak:keycloak-admin-client)
### [`v24.0.5`](https://togithub.com/keycloak/keycloak/releases/tag/24.0.5) [Compare Source](https://togithub.com/keycloak/keycloak/compare/24.0.4...24.0.5)Highlights
Security issue with PAR clients using client_secret_post based authentication
This release contains the fix of the important security issue affecting some OIDC confidential clients using PAR (Pushed authorization request). In case you use OIDC confidential clients together with PAR and you use client authentication based on
client_id
andclient_secret
sent as parameters in the HTTP request body (methodclient_secret_post
specified in the OIDC specification), it is highly encouraged to rotate the client secrets of your clients after upgrading to this version.Upgrading
Before upgrading refer to the migration guide for a complete list of changes.
All resolved issues
Enhancements
Bugs
dist/quarkus
ldap
admin/ui
authentication
ci
ci
ci
docs
Highlights
Partial update to user attributes when updating users through the Admin User API is no longer supported
When updating user attributes through the Admin User API, you cannot execute partial updates when updating the user attributes, including the root attributes like
username
,email
,firstName
, andlastName
.For more details, see the Upgrading Guide.
Upgrading
Before upgrading refer to the migration guide for a complete list of changes.
All resolved issues
Enhancements
docs
dist/quarkus
docs
Bugs
admin/api
import-export
core
adapter/jee-saml
ci
ci
oidc
admin/ui
admin/ui
admin/api
infinispan
docs
admin/ui
admin/ui
admin/ui
admin/ui
admin/ui
dist/quarkus
admin/ui
core
ldap
docs
docs
Upgrading
Before upgrading refer to the migration guide for a complete list of changes.
All resolved issues
Enhancements
ldap
Bugs
ldap
identity-brokering
admin/api
adapter/javascript
operator
Upgrading
Before upgrading refer to the migration guide for a complete list of changes.
All resolved issues
Enhancements
authorization-services
docs
dist/quarkus
core
docs
docs
dist/quarkus
Bugs
account/ui
core
authentication
core
admin/ui
import-export
docs
admin/api
dist/quarkus
infinispan
authorization-services
core
account/ui
admin/ui
authentication
testsuite
authorization-services
docs
storage
docs
admin/ui
docs
core
user-profile
admin/ui
dist/quarkus
docs
login/ui
ci
core
docs
user-profile
account/ui
translations
core
oidc
docs
operator
dist/quarkus
authentication
docs
storage
user-profile
storage
user-profile
dist/quarkus
operator
authentication/webauthn
Configuration
๐ Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
๐ฆ Automerge: Disabled by config. Please merge this manually once you are satisfied.
โป Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
๐ป Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR has been generated by Mend Renovate. View repository job log here.