From e4bd4f2461ff345ae127740fd0b9a5c05a05352b Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Wed, 2 Oct 2024 19:56:17 +0200 Subject: [PATCH] Replace JS toolchain by asset-mapper when testing ux-turbo --- .github/workflows/test-turbo.yml | 28 +++++------------- src/Turbo/.gitignore | 9 +++--- src/Turbo/composer.json | 8 ++--- src/Turbo/tests/BroadcastTest.php | 4 +-- src/Turbo/tests/app/Kernel.php | 8 ++--- src/Turbo/tests/app/assets/controllers.json | 4 +++ .../tests/app/assets/controllers/.gitignore | 0 src/Turbo/tests/app/importmap.php | 29 +++++++++++++++++++ src/Turbo/tests/app/package.json | 27 ----------------- src/Turbo/tests/app/public/index.php | 3 ++ src/Turbo/tests/app/templates/base.html.twig | 4 ++- src/Turbo/tests/app/webpack.config.js | 23 --------------- 12 files changed, 61 insertions(+), 86 deletions(-) create mode 100644 src/Turbo/tests/app/assets/controllers.json create mode 100644 src/Turbo/tests/app/assets/controllers/.gitignore create mode 100644 src/Turbo/tests/app/importmap.php delete mode 100644 src/Turbo/tests/app/package.json delete mode 100644 src/Turbo/tests/app/webpack.config.js diff --git a/.github/workflows/test-turbo.yml b/.github/workflows/test-turbo.yml index 47008d2605a..d3028192200 100644 --- a/.github/workflows/test-turbo.yml +++ b/.github/workflows/test-turbo.yml @@ -41,10 +41,12 @@ jobs: strategy: fail-fast: false matrix: - php-version: ['8.1', '8.4'] + php-version: ['8.1', '8.3', '8.4'] include: - php-version: '8.1' dependency-version: 'lowest' + - php-version: '8.3' + dependency-version: 'highest' - php-version: '8.4' dependency-version: 'highest' @@ -65,8 +67,6 @@ jobs: - name: Checkout uses: actions/checkout@v4 - - run: corepack enable - - name: Setup PHP uses: shivammathur/setup-php@v2 with: @@ -75,31 +75,17 @@ jobs: - name: Install symfony/flex run: composer global config allow-plugins.symfony/flex true && composer global require symfony/flex - - name: Install Turbo packages + - name: Install dependencies with composer uses: ramsey/composer-install@v3 with: working-directory: src/Turbo dependency-versions: ${{ matrix.dependency-version }} - - name: Get yarn cache directory path - id: yarn-cache-dir-path - run: echo "dir=$(yarn config get cacheFolder)" >> $GITHUB_OUTPUT - - - uses: actions/cache@v4 - id: yarn-cache - with: - path: ${{ steps.yarn-cache-dir-path.outputs.dir }} - key: ${{ runner.os }}-yarn-${{ hashFiles('**/package.json') }} - restore-keys: | - ${{ runner.os }}-yarn- - - name: Install JavaScript dependencies working-directory: src/Turbo/tests/app - run: touch yarn.lock && yarn install --mode update-lockfile && yarn install - - - name: Build JavaScript - working-directory: src/Turbo/tests/app - run: yarn build + run: | + php public/index.php importmap:install + php public/index.php asset-map:compile - name: Create DB working-directory: src/Turbo/tests/app diff --git a/src/Turbo/.gitignore b/src/Turbo/.gitignore index 264070be8bd..9bd0c178ff6 100644 --- a/src/Turbo/.gitignore +++ b/src/Turbo/.gitignore @@ -3,10 +3,11 @@ /.phpunit.result.cache /composer.phar /composer.lock +/drivers/ /phpunit.xml -/vendor/ -/tests/app/var +/tests/app/assets/vendor/ +/tests/app/public/assets/ /tests/app/public/build/ +/tests/app/var/ +/vendor/ node_modules/ -package-lock.json -yarn.lock diff --git a/src/Turbo/composer.json b/src/Turbo/composer.json index e3cb46514a4..b98a77b154b 100644 --- a/src/Turbo/composer.json +++ b/src/Turbo/composer.json @@ -41,21 +41,21 @@ "doctrine/doctrine-bundle": "^2.4.3", "doctrine/orm": "^2.8 | 3.0", "phpstan/phpstan": "^1.10", + "symfony/asset-mapper": "^6.4|^7.0", "symfony/debug-bundle": "^5.4|^6.0|^7.0", "symfony/form": "^5.4|^6.0|^7.0", - "symfony/framework-bundle": "^5.4|^6.0|^7.0", + "symfony/framework-bundle": "^6.4|^7.0", "symfony/mercure-bundle": "^0.3.7", "symfony/messenger": "^5.4|^6.0|^7.0", - "symfony/panther": "^1.0|^2.0", + "symfony/panther": "^2.1", "symfony/phpunit-bridge": "^5.4|^6.0|^7.0", "symfony/process": "^5.4|6.3.*|^7.0", "symfony/property-access": "^5.4|^6.0|^7.0", "symfony/security-core": "^5.4|^6.0|^7.0", "symfony/stopwatch": "^5.4|^6.0|^7.0", "symfony/ux-twig-component": "^2.21", - "symfony/twig-bundle": "^5.4|^6.0|^7.0", + "symfony/twig-bundle": "^6.4|^7.0", "symfony/web-profiler-bundle": "^5.4|^6.0|^7.0", - "symfony/webpack-encore-bundle": "^2.1.1", "symfony/expression-language": "^5.4|^6.0|^7.0", "dbrekelmans/bdi": "dev-main" }, diff --git a/src/Turbo/tests/BroadcastTest.php b/src/Turbo/tests/BroadcastTest.php index 3fee2ec3a6a..f95b00cde54 100644 --- a/src/Turbo/tests/BroadcastTest.php +++ b/src/Turbo/tests/BroadcastTest.php @@ -26,8 +26,8 @@ class BroadcastTest extends PantherTestCase protected function setUp(): void { - if (!file_exists(__DIR__.'/app/public/build')) { - throw new \Exception(\sprintf('Move into "%s" and execute Encore before running this test.', realpath(__DIR__.'/app'))); + if (!file_exists(__DIR__.'/app/assets/vendor/installed.php')) { + throw new \Exception(\sprintf('Move into "%s" and execute `php public/index.php importmap:install` before running this test.', realpath(__DIR__.'/app'))); } parent::setUp(); diff --git a/src/Turbo/tests/app/Kernel.php b/src/Turbo/tests/app/Kernel.php index 5e2594135e0..675a0f8bcca 100644 --- a/src/Turbo/tests/app/Kernel.php +++ b/src/Turbo/tests/app/Kernel.php @@ -39,7 +39,6 @@ use Symfony\UX\StimulusBundle\StimulusBundle; use Symfony\UX\Turbo\TurboBundle; use Symfony\UX\TwigComponent\TwigComponentBundle; -use Symfony\WebpackEncoreBundle\WebpackEncoreBundle; use Twig\Environment; /** @@ -57,7 +56,6 @@ public function registerBundles(): iterable yield new MercureBundle(); yield new TwigComponentBundle(); yield new TurboBundle(); - yield new WebpackEncoreBundle(); yield new StimulusBundle(); yield new WebProfilerBundle(); yield new DebugBundle(); @@ -67,10 +65,13 @@ protected function configureContainer(ContainerConfigurator $container): void { $container->extension('framework', [ 'secret' => 'ChangeMe', - 'test' => 'test' === ($_SERVER['APP_ENV'] ?? 'dev'), + 'test' => 'test' === $this->environment, 'router' => [ 'utf8' => true, ], + 'asset_mapper' => [ + 'paths' => ['assets/'], + ], 'profiler' => [ 'only_exceptions' => false, ], @@ -108,7 +109,6 @@ protected function configureContainer(ContainerConfigurator $container): void $container ->extension('doctrine', $doctrineConfig); - $container->extension('webpack_encore', ['output_path' => 'build']); $container->extension('web_profiler', [ 'toolbar' => true, 'intercept_redirects' => false, diff --git a/src/Turbo/tests/app/assets/controllers.json b/src/Turbo/tests/app/assets/controllers.json new file mode 100644 index 00000000000..bde96a535a4 --- /dev/null +++ b/src/Turbo/tests/app/assets/controllers.json @@ -0,0 +1,4 @@ +{ + "controllers": {}, + "entrypoints": [] +} diff --git a/src/Turbo/tests/app/assets/controllers/.gitignore b/src/Turbo/tests/app/assets/controllers/.gitignore new file mode 100644 index 00000000000..e69de29bb2d diff --git a/src/Turbo/tests/app/importmap.php b/src/Turbo/tests/app/importmap.php new file mode 100644 index 00000000000..d0f04e19019 --- /dev/null +++ b/src/Turbo/tests/app/importmap.php @@ -0,0 +1,29 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +return [ + 'app' => [ + 'path' => './assets/app.js', + 'entrypoint' => true, + ], + '@hotwired/stimulus' => [ + 'version' => '3.2.2', + ], + '@symfony/stimulus-bundle' => [ + 'path' => '../../vendor/symfony/stimulus-bundle/assets/dist/loader.js', + ], + '@symfony/ux-turbo/dist/turbo_stream_controller' => [ + 'path' => '../../assets/dist/turbo_stream_controller.js', + ], + '@hotwired/turbo' => [ + 'version' => '7.3.0', + ], +]; diff --git a/src/Turbo/tests/app/package.json b/src/Turbo/tests/app/package.json deleted file mode 100644 index 43fc6df5435..00000000000 --- a/src/Turbo/tests/app/package.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "packageManager": "yarn@4.5.0", - "devDependencies": { - "@babel/core": "^7.20.12", - "@babel/preset-env": "^7.20.2", - "@hotwired/stimulus": "^3.0.0", - "@hotwired/turbo": "^7.0.1", - "@symfony/ux-turbo": "file:../../assets", - "@symfony/webpack-encore": "^4.2.0", - "core-js": "^3.0.0", - "regenerator-runtime": "^0.13.2", - "webpack": "^5.75.0", - "webpack-cli": "^5.0.1", - "webpack-notifier": "^1.6.0" - }, - "resolutions": { - "coa": "2.0.2" - }, - "license": "MIT", - "private": true, - "scripts": { - "dev-server": "encore dev-server", - "dev": "encore dev", - "watch": "encore dev --watch", - "build": "encore production --progress" - } -} diff --git a/src/Turbo/tests/app/public/index.php b/src/Turbo/tests/app/public/index.php index 3b0f4f6a53c..0ca58ec3a50 100644 --- a/src/Turbo/tests/app/public/index.php +++ b/src/Turbo/tests/app/public/index.php @@ -11,10 +11,13 @@ use App\Kernel; use Symfony\Bundle\FrameworkBundle\Console\Application; +use Symfony\Component\ErrorHandler\Debug; use Symfony\Component\HttpFoundation\Request; require __DIR__.'/../../../vendor/autoload.php'; +Debug::enable(); + $app = new Kernel($_SERVER['APP_ENV'] ?? 'dev', $_SERVER['APP_DEBUG'] ?? true); if (\PHP_SAPI === 'cli') { diff --git a/src/Turbo/tests/app/templates/base.html.twig b/src/Turbo/tests/app/templates/base.html.twig index 0a3c7a37350..0d532df5fab 100644 --- a/src/Turbo/tests/app/templates/base.html.twig +++ b/src/Turbo/tests/app/templates/base.html.twig @@ -4,7 +4,9 @@ Symfony UX Turbo {% block stylesheets %}{% endblock %} - {{ encore_entry_script_tags('app') }} + {% block javascripts %} + {% block importmap %}{{ importmap('app') }}{% endblock %} + {% endblock %}