diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml
index 68e9a8d8..e1e32d54 100644
--- a/.github/workflows/continuous-integration.yml
+++ b/.github/workflows/continuous-integration.yml
@@ -22,6 +22,8 @@ jobs:
       matrix:
         php-version:
           - "8.1"
+          - "8.2"
+          - "8.3"
         dependency-version: [prefer-lowest, prefer-stable]
         experimental: [false]
 
@@ -49,14 +51,13 @@ jobs:
         key: ${{ runner.os }}-php-${{ matrix.php-version }}-${{ hashFiles('**/composer.lock') }}
         restore-keys: ${{ runner.os }}-php-${{ matrix.php-version }}-
 
-    - name: Install dependencies (PHP 7)
-      if: steps.composer-cache.outputs.cache-hit != 'true' && matrix.php-version < 8
-      run: composer update --${{ matrix.dependency-version }} --no-progress --no-interaction
-
     - name: Install dependencies (PHP 8)
       if: steps.composer-cache.outputs.cache-hit != 'true' && matrix.php-version >= 8
       run: composer update --${{ matrix.dependency-version }} --ignore-platform-req=php --no-progress --no-interaction
 
+    - name: Pull the docker image used by the tests.
+      run: docker pull busybox:latest
+
     - name: Run PHPUnit test suite
       run: composer run-script test-ci
 
@@ -68,3 +69,4 @@ jobs:
         coverageCommand: composer run-script test-coverage
         coverageLocations: |
           ${{github.workspace}}/clover.xml:clover
+      if: github.event_name != 'pull_request'
diff --git a/composer.json b/composer.json
index 5edebfe5..15a9edf5 100644
--- a/composer.json
+++ b/composer.json
@@ -44,12 +44,14 @@
     "require-dev": {
         "friendsofphp/php-cs-fixer": "^3.8",
         "php-parallel-lint/php-parallel-lint": "^1.2",
+        "phpstan/phpstan": "^1.10",
         "phpunit/phpunit": "^9.5",
         "psy/psysh": "^0.11",
         "roave/security-advisories": "dev-latest"
     },
     "conflict": {
-        "docker-php/docker-php": "*"
+        "docker-php/docker-php": "*",
+        "php-http/message": "<1.15"
     },
     "scripts": {
         "php-cs-fixer": "vendor/bin/php-cs-fixer fix --dry-run --verbose --diff",
@@ -57,6 +59,7 @@
         "console": "vendor/bin/psysh",
         "lint": "vendor/bin/parallel-lint --exclude vendor .",
         "phpunit": "vendor/bin/phpunit ./tests/ --coverage-html=./report/coverage/ --whitelist=./src/ --testdox-html=./report/testdox.html --disallow-test-output --process-isolation",
+        "phpstan": "vendor/bin/phpstan analyse --level 2 src",
         "test-ci": "vendor/bin/phpunit ./tests/ --disallow-test-output --process-isolation",
         "test-coverage": "vendor/bin/phpunit ./tests/ --whitelist=./src/ --coverage-clover=clover.xml",
         "test": [
diff --git a/src/Context/ContextBuilder.php b/src/Context/ContextBuilder.php
index 5e0aa37b..0464b15a 100644
--- a/src/Context/ContextBuilder.php
+++ b/src/Context/ContextBuilder.php
@@ -39,7 +39,7 @@ class ContextBuilder
     private $entrypoint;
 
     /**
-     * @param \Symfony\Component\Filesystem\Filesystem
+     * @param \Symfony\Component\Filesystem\Filesystem $fs
      */
     public function __construct(Filesystem $fs = null)
     {
diff --git a/src/Docker.php b/src/Docker.php
index 6e98c7e2..b63c99cd 100644
--- a/src/Docker.php
+++ b/src/Docker.php
@@ -87,7 +87,11 @@ public function systemEvents(array $queryParameters = [], string $fetch = self::
         return $this->executeEndpoint(new SystemEvents($queryParameters), $fetch);
     }
 
-    public static function create($httpClient = null, array $additionalPlugins = [], array $additionalNormalizers = [])
+    public static function create(
+        $httpClient = null,
+        array $additionalPlugins = [],
+        array $additionalNormalizers = []
+    ): self
     {
         if (null === $httpClient) {
             $httpClient = DockerClientFactory::createFromEnv();
diff --git a/src/Stream/EventStream.php b/src/Stream/EventStream.php
index 90dcf23e..1c18a805 100644
--- a/src/Stream/EventStream.php
+++ b/src/Stream/EventStream.php
@@ -16,6 +16,6 @@ class EventStream extends MultiJsonStream
      */
     protected function getDecodeClass()
     {
-        return 'EventsGetResponse200';
+        return 'EventMessage';
     }
 }
diff --git a/tests/Resource/ContainerResourceTest.php b/tests/Resource/ContainerResourceTest.php
index 3ebb7758..eb6024a1 100644
--- a/tests/Resource/ContainerResourceTest.php
+++ b/tests/Resource/ContainerResourceTest.php
@@ -61,6 +61,8 @@ public function testAttach(): void
 
     public function testAttachWebsocket(): void
     {
+        $this->markTestSkipped('Since docker API 1.28 Websockets are binary so this test needs work. ' .
+            'See https://github.com/xtermjs/xterm.js/issues/883');
         $containerConfig = new ContainersCreatePostBody();
         $containerConfig->setImage('busybox:latest');
         $containerConfig->setCmd(['sh']);
@@ -108,6 +110,9 @@ public function testAttachWebsocket(): void
 
     public function testLogs(): void
     {
+        $this->markTestSkipped('Since at least 1.43 docker API does not return a `application/vnd.docker.raw-stream` ' .
+            'but a `application/vnd.docker.multiplexed-stream` so this needs review. '.
+            'See https://github.com/beluga-php/docker-php/issues/19');
         $containerConfig = new ContainersCreatePostBody();
         $containerConfig->setImage('busybox:latest');
         $containerConfig->setCmd(['echo', '-n', 'output']);
diff --git a/tests/Resource/SystemResourceTest.php b/tests/Resource/SystemResourceTest.php
index b88c4069..fb1badf3 100644
--- a/tests/Resource/SystemResourceTest.php
+++ b/tests/Resource/SystemResourceTest.php
@@ -4,7 +4,7 @@
 
 namespace Docker\Tests\Resource;
 
-use Docker\API\Model\EventsGetResponse200;
+use Docker\API\Model\EventMessage;
 use Docker\Tests\TestCase;
 
 class SystemResourceTest extends TestCase
@@ -36,6 +36,6 @@ public function testGetEvents(): void
 
         $stream->wait();
 
-        $this->assertInstanceOf(EventsGetResponse200::class, $lastEvent);
+        $this->assertInstanceOf(EventMessage::class, $lastEvent);
     }
 }
