{"id":21419308,"url":"https://github.com/wimdeblauwe/testcontainers-cypress","last_synced_at":"2025-05-09T02:35:39.124Z","repository":{"id":44545138,"uuid":"230449175","full_name":"wimdeblauwe/testcontainers-cypress","owner":"wimdeblauwe","description":"Testcontainers module for running Cypress tests","archived":false,"fork":false,"pushed_at":"2024-09-11T14:59:10.000Z","size":290,"stargazers_count":67,"open_issues_count":5,"forks_count":19,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-31T21:28:37.027Z","etag":null,"topics":["cypress","java","spring-boot","testcontainers"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wimdeblauwe.png","metadata":{"files":{"readme":"README.adoc","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-12-27T13:30:17.000Z","updated_at":"2025-02-13T20:29:52.000Z","dependencies_parsed_at":"2024-09-11T20:23:25.608Z","dependency_job_id":"bde1eccc-1be4-4f3e-9855-b465962ef5a5","html_url":"https://github.com/wimdeblauwe/testcontainers-cypress","commit_stats":null,"previous_names":[],"tags_count":24,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wimdeblauwe%2Ftestcontainers-cypress","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wimdeblauwe%2Ftestcontainers-cypress/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wimdeblauwe%2Ftestcontainers-cypress/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wimdeblauwe%2Ftestcontainers-cypress/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wimdeblauwe","download_url":"https://codeload.github.com/wimdeblauwe/testcontainers-cypress/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253178262,"owners_count":21866488,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cypress","java","spring-boot","testcontainers"],"created_at":"2024-11-22T19:39:20.993Z","updated_at":"2025-05-09T02:35:39.101Z","avatar_url":"https://github.com/wimdeblauwe.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"= Cypress Testcontainer\n:toc: macro\n\nimage:https://maven-badges.herokuapp.com/maven-central/io.github.wimdeblauwe/testcontainers-cypress/badge.svg[\"Maven Central\", link=\"https://search.maven.org/search?q=a:testcontainers-cypress\"]\n\ntoc::[]\n\n== Goal\n\nThe goal of this project is to make it easy to start https://www.cypress.io/[Cypress] tests via https://www.testcontainers.org/[Testcontainers].\n\n== Example usage\n\n=== Setup Cypress\n\n. Create `src/test/e2e` directory in your project.\n. Run `npm init` in that directory. This will generate a `package.json` file.\n. Run `npm install cypress --save-dev` to install Cypress as a development dependency.\n. Run `npx cypress open` to start the Cypress application. It will notice that this is the first startup and add some example tests.\n. Run `npm install cypress-multi-reporters mocha mochawesome --save-dev` to install Mochawesome as a test reporter. Testcontainers-cypress will\nuse that to parse the results of the Cypress tests.\n. Update `cypress.config.js` as follows:\n+\n[source,js]\n----\nconst { defineConfig } = require('cypress')\n\nmodule.exports = defineConfig({\n  e2e: {\n    baseUrl: 'http://localhost:8080/',\n    reporter: 'cypress-multi-reporters',\n    reporterOptions: {\n      configFile: 'reporter-config.json'\n    }\n  }\n})\n----\n. Create a `reporter-config.json` file (next to `cypress.json`) and ensure it contains:\n+\n[source,json]\n----\n{\n  \"reporterEnabled\": \"spec, mochawesome\",\n  \"mochawesomeReporterOptions\": {\n    \"reportDir\": \"cypress/reports/mochawesome\",\n    \"overwrite\": false,\n    \"html\": false,\n    \"json\": true\n  }\n}\n----\n\n[TIP]\n====\nAdd the following to your `.gitignore` to avoid accidental commits:\n\n[source]\n----\nnode_modules\nsrc/test/e2e/cypress/reports\nsrc/test/e2e/cypress/videos\nsrc/test/e2e/cypress/screenshots\n----\n====\n\n=== Add dependency\n\n==== Maven\n\nUse this dependency if you use Maven:\n\n[source,xml]\n----\n\u003cdependency\u003e\n    \u003cgroupId\u003eio.github.wimdeblauwe\u003c/groupId\u003e\n    \u003cartifactId\u003etestcontainers-cypress\u003c/artifactId\u003e\n    \u003cversion\u003e${tc-cypress.version}\u003c/version\u003e\n    \u003cscope\u003etest\u003c/scope\u003e\n\u003c/dependency\u003e\n----\n\nAdd `src/test/e2e` as a test resource directory:\n\n[source,xml]\n----\n\u003cproject\u003e\n    \u003cbuild\u003e\n        ...\n        \u003ctestResources\u003e\n            \u003ctestResource\u003e\n                \u003cdirectory\u003esrc/test/resources\u003c/directory\u003e\n            \u003c/testResource\u003e\n            \u003ctestResource\u003e\n                \u003cdirectory\u003esrc/test/e2e\u003c/directory\u003e\n                \u003ctargetPath\u003ee2e\u003c/targetPath\u003e\n            \u003c/testResource\u003e\n        \u003c/testResources\u003e\n    \u003c/build\u003e\n\u003c/project\u003e\n----\n\n==== Gradle\n\nFor Gradle, use the following dependency:\n\n[source, groovy]\n----\ntestImplementation 'io.github.wimdeblauwe:testcontainers-cypress:${tc-cypress.version}'\n----\n\nProcess `src/test/e2e` as a test resource directory and copy it into `buid/resources/test/e2e`.\n\n[source, groovy]\n----\nprocessTestResources {\n    from(\"src/test/e2e\") {\n        exclude 'node_modules'\n        into(\"e2e\")\n    }\n}\n----\n\nThe default `GatherTestResultsStrategy` assumes a Maven project and therefore you need to create a custom strategy that fits the Gradle layout.\n\n[source, java]\n----\nMochawesomeGatherTestResultsStrategy gradleTestResultStrategy = new MochawesomeGatherTestResultsStrategy(\n    FileSystems.getDefault().getPath(\"build\", \"resources\", \"test\", \"e2e\", \"cypress\", \"reports\", \"mochawesome\"));\n    \nnew CypressContainer()\n     .withGatherTestResultsStrategy(gradleTestResultStrategy)\n----\n\n\n=== Usage with a @SpringBootTest\n\nThe library is not tied to Spring Boot, but I will use the example of a `@SpringBootTest`\nto explain how to use it.\n\nSuppose you have a Spring Boot application that has server-side rendered templates using Thymeleaf, and\nyou want to write some UI tests using Cypress. We want to drive all this from a JUnit based test, so we do the following:\n\n. Have Spring Boot start the complete application in a test. This is easy using the `@SpringBootTest` annotation on a JUnit test.\n. Expose the web port that was opened towards Testcontainers so that Cypress that is running in a Docker container can access\nour started web application.\n. Start the Docker container to run the Cypress tests.\n. Wait for the tests to be done and report the results to JUnit.\n\nStart by writing the following JUnit test:\n\n[source,java]\n----\n@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) //\u003c.\u003e\n@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) //\u003c.\u003e\npublic class CypressEndToEndTests {\n\n    @LocalServerPort //\u003c.\u003e\n    private int port;\n\n     @Test\n    void runCypressTests() throws InterruptedException, IOException, TimeoutException {\n\n        Testcontainers.exposeHostPorts(port); //\u003c.\u003e\n\n        try (CypressContainer container = new CypressContainer().withLocalServerPort(port)) { //\u003c.\u003e\n            container.start();\n            CypressTestResults testResults = container.getTestResults(); //\u003c.\u003e\n\n            if (testResults.getNumberOfFailingTests() \u003e 0) {\n                fail(\"There was a failure running the Cypress tests!\\n\\n\" + testResults); //\u003c.\u003e\n            }\n        }\n    }\n}\n----\n\u003c.\u003e Have Spring Boot start the full application on a random port.\n\u003c.\u003e Tell Spring Boot to _not_ configure a test database,  Because we use a real database (via Testcontainers obviously :-) ).\n\u003c.\u003e Have Spring inject the random port that was used when starting the application.\n\u003c.\u003e Ensures that the container will be able to access the Spring Boot application that is started via @SpringBootTest\n\u003c.\u003e Create the `CypressContainer` and pass in the `port` so the base URL that Cypress will use is correct.\n\u003c.\u003e Wait on the tests and get the results.\n\u003c.\u003e Check if there have been failures in Cypress. If so, fail the test.\n\n=== JUnit 5 dynamic tests\n\nIf you are using JUnit 5, then you can use a `@TestFactory` annotated method so that it looks like there is a JUnit test\nfor each of the Cypress tests.\n\n[source,java]\n----\n@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)\n@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)\npublic class CypressEndToEndTests {\n\n    @LocalServerPort\n    private int port;\n\n     @TestFactory // \u003c.\u003e\n    List\u003cDynamicContainer\u003e runCypressTests() throws InterruptedException, IOException, TimeoutException {\n\n        Testcontainers.exposeHostPorts(port);\n\n        try (CypressContainer container = new CypressContainer().withLocalServerPort(port)) {\n            container.start();\n            CypressTestResults testResults = container.getTestResults();\n\n             return convertToJUnitDynamicTests(testResults); // \u003c.\u003e\n        }\n    }\n\n    @NotNull\n    private List\u003cDynamicContainer\u003e convertToJUnitDynamicTests(CypressTestResults testResults) {\n        List\u003cDynamicContainer\u003e dynamicContainers = new ArrayList\u003c\u003e();\n        List\u003cCypressTestSuite\u003e suites = testResults.getSuites();\n        for (CypressTestSuite suite : suites) {\n            createContainerFromSuite(dynamicContainers, suite);\n        }\n        return dynamicContainers;\n    }\n\n    private void createContainerFromSuite(List\u003cDynamicContainer\u003e dynamicContainers, CypressTestSuite suite) {\n        List\u003cDynamicTest\u003e dynamicTests = new ArrayList\u003c\u003e();\n        for (CypressTest test : suite.getTests()) {\n            dynamicTests.add(DynamicTest.dynamicTest(test.getDescription(), () -\u003e {\n                if (!test.isSuccess()) {\n                    LOGGER.error(test.getErrorMessage());\n                    LOGGER.error(test.getStackTrace());\n                }\n                assertTrue(test.isSuccess());\n            }));\n        }\n        dynamicContainers.add(DynamicContainer.dynamicContainer(suite.getTitle(), dynamicTests));\n    }\n}\n----\n\u003c.\u003e Use the `@TestFactory` annotated as opposed to the `@Test` method\n\u003c.\u003e Use the `CypressTestResults` to generate `DynamicTest` and `DynamicContainer` instances\n\nIf the Cypress tests look like this:\n\n[source,javascript]\n----\ncontext('Todo tests', () =\u003e {\n   it('should show a message if there are no todo items', () =\u003e {\n       cy.request('POST', '/api/integration-test/clear-all-todos');\n       cy.visit('/todos');\n       cy.get('h1').contains('TODO list');\n       cy.get('#empty-todos-message').contains('There are no todo items');\n   });\n\n   it('should show all todo items', () =\u003e {\n       cy.request('POST', '/api/integration-test/prepare-todo-list-items');\n       cy.visit('/todos');\n       cy.get('h1').contains('TODO list');\n       cy.get('#todo-items-list')\n           .children()\n           .should('have.length', 2)\n           .should('contain', 'Add Cypress tests')\n           .and('contain', 'Write blog post');\n   })\n});\n----\n\nThen running the JUnit test will show this in the IDE:\n\nimage::Cypress tests in JUnit with IntelliJ.png[]\n\nThis makes it a lot easier to see which Cypress test has failed.\n\n== Configuration options\n\nThe `CypressContainer` instance can be customized with the following options:\n\n[cols=\"m,a,m\"]\n|===\n|Method |Description |Default\n\n|CypressContainer(String dockerImageName)\n|Allows to specify the docker image to use\n|cypress/included:4.0.1\n\n|withLocalServerPort(int port)\n|Set the port where the server is running on. It will use http://host.testcontainers.internal as hostname with the given port as the Cypress base URL. For a `@SpringBootTest`, pass the injected `@LocalServerPort` here.\n|8080\n\n|withBaseUrl(String baseUrl)\n|Set the full server url that will be used as base URL for Cypress.\n|http://host.testcontainers.internal:8080\n\n|withBrowser(String browser)\n|Set the browser to use when running the tests (E.g. `electron`, `chrome`, `firefox`)\n|electron\n\n|withSpec(String spec)\n|Sets the test(s) to run. This can be a single test (e.g. `cypress/integration/todos.spec.js`)\nor multiple (e.g. `cypress/integration/login/**`)\n| By default (meaning not calling this method), all tests are run.\n\n|withRecord()\n|Passes the `--record` flag on the command line to record the test results on the https://docs.cypress.io/guides/dashboard/introduction.html[Cypress Dashboard].\nThe `CYPRESS_RECORD_KEY` environment variable needs to be set for this to work.\n| Not enabled by default\n\n|withRecord(String recordKey)\n|Passes the `--record` flag on the command line to record the test results on the https://docs.cypress.io/guides/dashboard/introduction.html[Cypress Dashboard] using the given record key.\n| Not enabled by default\n\n|withClasspathResourcePath(String resourcePath)\n|Set the relative path of where the cypress tests are (the path is the location of where the `cypress.json` file is)\n|e2e\n\n|withMaximumTotalTestDuration(Duration duration)\n|Set the maximum timeout for running the Cypress tests.\n|Duration.ofMinutes(10)\n\n|withGatherTestResultsStrategy(GatherTestResultsStrategy strategy)\n|Set the `GatherTestResultsStrategy` object that should be used for gathering information on the Cypress tests results.\n|MochawesomeGatherTestResultsStrategy\n\n|withMochawesomeReportsAt(Path path)\n|Set the path (relative to the root of the project) where the Mochawesome reports are put.\n|FileSystems.getDefault().getPath(\"target\", \"test-classes\", \"e2e\", \"cypress\", \"reports\", \"mochawesome\")\n\n|withAutoCleanReports(boolean autoCleanReports)\n|Set if the Cypress test reports should be automatically cleaned before each run or not.\n|true\n|===\n\n== Testcontainers \u0026 Cypress versions compatibility\n\n|===\n|Testcontainers-cypress |Testcontainers | Cypress\n\n|https://github.com/wimdeblauwe/testcontainers-cypress/releases/tag/testcontainers-cypress-1.9.1[1.9.1]\n|https://github.com/testcontainers/testcontainers-java/releases/tag/1.19.8[1.19.8]\n|https://docs.cypress.io/guides/references/changelog.html#13-14-2[13.14.2]\n\n|https://github.com/wimdeblauwe/testcontainers-cypress/releases/tag/testcontainers-cypress-1.9.0[1.9.0]\n|https://github.com/testcontainers/testcontainers-java/releases/tag/1.19.1[1.19.1]\n|https://docs.cypress.io/guides/references/changelog.html#13-3-0[13.3.0]\n\n|https://github.com/wimdeblauwe/testcontainers-cypress/releases/tag/testcontainers-cypress-1.8.0[1.8.0]\n|https://github.com/testcontainers/testcontainers-java/releases/tag/1.17.6[1.17.6]\n|https://docs.cypress.io/guides/references/changelog.html#12-9-0[12.9.0]\n\n|https://github.com/wimdeblauwe/testcontainers-cypress/releases/tag/testcontainers-cypress-1.7.1[1.7.1]\n|https://github.com/testcontainers/testcontainers-java/releases/tag/1.17.5[1.17.5]\n|https://docs.cypress.io/guides/references/changelog.html#10-11-0[10.11.0]\n\n|https://github.com/wimdeblauwe/testcontainers-cypress/releases/tag/testcontainers-cypress-1.7.0[1.7.0]\n|https://github.com/testcontainers/testcontainers-java/releases/tag/1.17.3[1.17.3]\n|https://docs.cypress.io/guides/references/changelog.html#10-7-0[10.7.0]\n\n|https://github.com/wimdeblauwe/testcontainers-cypress/releases/tag/testcontainers-cypress-1.6.3[1.6.3]\n|https://github.com/testcontainers/testcontainers-java/releases/tag/1.17.3[1.17.3]\n|https://docs.cypress.io/guides/references/changelog.html#9-7-0[9.7.0]\n\n|https://github.com/wimdeblauwe/testcontainers-cypress/releases/tag/testcontainers-cypress-1.6.2[1.6.2]\n|https://github.com/testcontainers/testcontainers-java/releases/tag/1.16.3[1.16.3]\n|https://docs.cypress.io/guides/references/changelog.html#9-1-0[9.1.0]\n\n|https://github.com/wimdeblauwe/testcontainers-cypress/releases/tag/testcontainers-cypress-1.6.1[1.6.1]\n|https://github.com/testcontainers/testcontainers-java/releases/tag/1.16.2[1.16.2]\n|https://docs.cypress.io/guides/references/changelog.html#9-1-0[9.1.0]\n\n|https://github.com/wimdeblauwe/testcontainers-cypress/releases/tag/testcontainers-cypress-1.6.0[1.6.0]\n|https://github.com/testcontainers/testcontainers-java/releases/tag/1.16.2[1.16.2]\n|https://docs.cypress.io/guides/references/changelog.html#9-1-0[9.1.0]\n\n|https://github.com/wimdeblauwe/testcontainers-cypress/releases/tag/testcontainers-cypress-1.5.0[1.5.0]\n|https://github.com/testcontainers/testcontainers-java/releases/tag/1.16.2[1.16.2]\n|https://docs.cypress.io/guides/references/changelog.html#8-7-0[8.7.0]\n\n|https://github.com/wimdeblauwe/testcontainers-cypress/releases/tag/testcontainers-cypress-1.4.0[1.4.0]\n|https://github.com/testcontainers/testcontainers-java/releases/tag/1.16.2[1.16.2]\n|https://docs.cypress.io/guides/references/changelog.html#7-7-0[7.7.0]\n\n|https://github.com/wimdeblauwe/testcontainers-cypress/releases/tag/testcontainers-cypress-1.3.0[1.3.0]\n|https://github.com/testcontainers/testcontainers-java/releases/tag/1.15.2[1.15.2]\n|https://docs.cypress.io/guides/references/changelog.html#6-8-0[6.8.0]\n\n|https://github.com/wimdeblauwe/testcontainers-cypress/releases/tag/testcontainers-cypress-1.2.1[1.2.1]\n|https://github.com/testcontainers/testcontainers-java/releases/tag/1.15.1[1.15.1]\n|https://docs.cypress.io/guides/references/changelog.html#5-6-0[5.6.0]\n\n|https://github.com/wimdeblauwe/testcontainers-cypress/releases/tag/testcontainers-cypress-1.2.0[1.2.0]\n|https://github.com/testcontainers/testcontainers-java/releases/tag/1.15.0[1.15.0]\n|https://docs.cypress.io/guides/references/changelog.html#5-6-0[5.6.0]\n\n|https://github.com/wimdeblauwe/testcontainers-cypress/releases/tag/testcontainers-cypress-1.1.0[1.1.0]\n|https://github.com/testcontainers/testcontainers-java/releases/tag/1.15.0[1.15.0]\n|https://docs.cypress.io/guides/references/changelog.html#5-5-0[5.5.0]\n\n|https://github.com/wimdeblauwe/testcontainers-cypress/releases/tag/testcontainers-cypress-1.0.0[1.0.0]\n|https://github.com/testcontainers/testcontainers-java/releases/tag/1.14.3[1.14.3]\n|https://docs.cypress.io/guides/references/changelog.html#4-12-1[4.12.1]\n\n|https://github.com/wimdeblauwe/testcontainers-cypress/releases/tag/testcontainers-cypress-0.7.0[0.7.0]\n|https://github.com/testcontainers/testcontainers-java/releases/tag/1.14.1[1.14.1]\n|https://docs.cypress.io/guides/references/changelog.html#4-5-0[4.5.0]\n\n|https://github.com/wimdeblauwe/testcontainers-cypress/releases/tag/testcontainers-cypress-0.6.0[0.6.0]\n|https://github.com/testcontainers/testcontainers-java/releases/tag/1.13.0[1.13.0]\n|https://docs.cypress.io/guides/references/changelog.html#4-3-0[4.3.0]\n\n|https://github.com/wimdeblauwe/testcontainers-cypress/releases/tag/testcontainers-cypress-0.5.0[0.5.0]\n|https://github.com/testcontainers/testcontainers-java/releases/tag/1.12.5[1.12.5]\n|https://docs.cypress.io/guides/references/changelog.html#4-0-2[4.0.2]\n\n|https://github.com/wimdeblauwe/testcontainers-cypress/releases/tag/testcontainers-cypress-0.4.0[0.4.0]\n|https://github.com/testcontainers/testcontainers-java/releases/tag/1.12.5[1.12.5]\n|https://docs.cypress.io/guides/references/changelog.html#4-0-1[4.0.1]\n\n|https://github.com/wimdeblauwe/testcontainers-cypress/releases/tag/testcontainers-cypress-0.3.0[0.3.0]\n|https://github.com/testcontainers/testcontainers-java/releases/tag/1.12.3[1.12.3]\n|https://docs.cypress.io/guides/references/changelog.html#3-8-3[3.8.3]\n\n|https://github.com/wimdeblauwe/testcontainers-cypress/releases/tag/testcontainers-cypress-0.2.0[0.2.0]\n|https://github.com/testcontainers/testcontainers-java/releases/tag/1.12.3[1.12.3]\n|https://docs.cypress.io/guides/references/changelog.html#3-8-1[3.8.1]\n\n|https://github.com/wimdeblauwe/testcontainers-cypress/releases/tag/testcontainers-cypress-0.1.0[0.1.0]\n|https://github.com/testcontainers/testcontainers-java/releases/tag/1.12.3[1.12.3]\n|https://docs.cypress.io/guides/references/changelog.html#3-8-0[3.8.0]\n|===\n\n== Troubleshooting\n\nWhen running on a mac with an M1 or M2 chip, only the _electron_ browser is included in the underlying https://hub.docker.com/r/cypress/included/[cypress image] this project uses. For more info please read https://github.com/cypress-io/cypress-docker-images/issues/695[this].\n\nThere is a workaround, however, which involves following steps:\n\n1. install rosetta 2: `softwareupdate --install-rosetta`\n2. Enable rosetta emulation in *docker desktop for mac*:\n- General \u003e Use virtualization framework\n- Features in Development \u003e Use rosetta for x86/amd64 simulation on apple silicon\n3. Pull the *platform specific (linux/amd64) image* for the cypress-included which you are using. For example: docker pull --platform linux/amd64 cypress/included:13.3.0\n\n== Links\n\nLinks to blog or articles that cover testcontainers-cypress:\n\nhttps://www.wimdeblauwe.com/blog/2020/2020-02-01-example-usage-of-testcontainers-cypress/[Example usage of testcontainers cypress] :: Good introduction on how to get started.\nhttps://www.wimdeblauwe.com/blog/2020/2020-02-11-testcontainers-cypress-release-0.4.0/[Testcontainers-cypress release 0.4.0] :: Shows how to run tests on multiple browsers with JUnit\n\n== Development\n\n* Builds are done with GitHub Actions: https://github.com/wimdeblauwe/testcontainers-cypress/actions\n* Code quality is available via SonarQube: https://sonarcloud.io/dashboard?id=io.github.wimdeblauwe%3Atestcontainers-cypress\n\n== Deployment\n\n* SNAPSHOT versions are put on https://oss.sonatype.org/content/repositories/snapshots\n* All releases can be downloaded from https://oss.sonatype.org/content/groups/public\n\n== Release\n\nTo release a new version of the project, follow these steps:\n\n1. Update `pom.xml` with the new version (Use `mvn versions:set -DgenerateBackupPoms=false -DnewVersion=\u003cVERSION\u003e`)\n2. Commit the changes locally.\n3. Tag the commit with the version (e.g. `1.0.0`) and push the tag.\n4. Create a new release in GitHub via https://github.com/wimdeblauwe/testcontainers-cypress/releases/new\n- Select the newly pushed tag\n- Update the release notes. This should automatically start\nthe [release action](https://github.com/wimdeblauwe/testcontainers-cypress/actions).\n5. Update `pom.xml` again with the next `SNAPSHOT` version.\n6. Close the milestone in the GitHub issue tracker.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwimdeblauwe%2Ftestcontainers-cypress","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwimdeblauwe%2Ftestcontainers-cypress","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwimdeblauwe%2Ftestcontainers-cypress/lists"}