Giter Site home page Giter Site logo

Failed to load assets in Sail about dusk HOT 4 CLOSED

damms005 avatar damms005 commented on June 4, 2024
Failed to load assets in Sail

from dusk.

Comments (4)

driesvints avatar driesvints commented on June 4, 2024

Heya, thanks for reporting.

We'll need more info and/or code to debug this further. Can you please create a repository with the command below, commit the code that reproduces the issue as one separate commit on the main/master branch and share the repository here? Please make sure that you have the latest version of the Laravel installer in order to run this command. Please also make sure you have both Git & the GitHub CLI tool properly set up.

laravel new bug-report --github="--public"

Please do not amend and create a separate commit with your custom changes. After you've posted the repository, we'll try to reproduce the issue.

Thanks!

from dusk.

damms005 avatar damms005 commented on June 4, 2024

Thank you. I am on it.

However, I should mention that when I ran laravel new bug-report --github="--public"

I got the following warning in the command output

WARN  Make sure the "gh" CLI tool is installed and that you're authenticated to GitHub. Skipping...

However, running gh --version outputs gh version 2.45.0 (2024-03-04), confirming that I have gh installed, as shown in the screenshot below.

image

from dusk.

driesvints avatar driesvints commented on June 4, 2024

@damms005 can't help you with that I'm afraid.. please just create the repo manually in this case and commit any custom things separately.

from dusk.

damms005 avatar damms005 commented on June 4, 2024

Thanks @driesvints

Having tried to unsuccessfully reproduce it in Laravel v11 and latest v10, I am now convinced that this is a problem with my local Docker setup. I think I've got my Docker environment messed up somehow, and it somehow only affects this project.

I am no Docker expert, so I'll pass on this. However, I managed to get a workaround, and sharing here should an alien from space hit this issue, too:

Workaround

Lary of Laracast gave me a hint that helped me with a temporary fix:

  1. Check Network Access: Verify that the Selenium service can access the laravel.test service. Since they are both in the same network (sail), they should be able to communicate without any issues.

With this nudge, I swapped APP_URL manually because no other solution I could think of worked. I tried:

  • setting APP_URL in a service provider if running test
  • setting APP_URL in phpunit.dusk.xml
  • manually creating content of .env.dusk.local from .env is not an option for me

So the below hot-swap monkey-patch is my workaround: tests/DuskTestCase.php:

protected static function ensureLaravelServiceIsAppUrl()
{
    $appEnvFilePath = __DIR__  . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '.env';
    $duskEnvFilePath = __DIR__  . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '.env.dusk.local';

    $laravelServiceName = 'laravel.test'; // -> service name in docker-compose.yml
    $appUrlForDusk = "http://{$laravelServiceName}";

    $contentOfEnv = file_get_contents($appEnvFilePath);
    $contentOfDuskEnv = file_exists($duskEnvFilePath)
        ? file_get_contents($duskEnvFilePath)
        : '';

    $appUrlInContentOfDuskEnv = preg_match('/APP_URL=(.*)/', $contentOfDuskEnv, $duskEnvMatches);

    if (!$appUrlInContentOfDuskEnv) {
        return self::copyEnvAndWriteLaravelServiceNameToDuskEnv($duskEnvFilePath,  $appUrlForDusk,  $contentOfEnv);
    }

    if ($duskEnvMatches[1] !== $appUrlForDusk) {
        return self::copyEnvAndWriteLaravelServiceNameToDuskEnv($duskEnvFilePath,  $appUrlForDusk,  $contentOfEnv);
    }
}

protected static function copyEnvAndWriteLaravelServiceNameToDuskEnv(string $duskEnvFilePath, string $appUrlForDusk, string $contentOfEnv)
{
    $updatedContentOfEnv = preg_replace('/APP_URL=(.*)/', "APP_URL={$appUrlForDusk}", $contentOfEnv);
    file_put_contents($duskEnvFilePath, $updatedContentOfEnv);
}

The finally, call it if running sail:

/**
 * Prepare for Dusk test execution.
 */
#[BeforeClass]
public static function prepare(): void
{
    if (!static::runningInSail()) {
        static::startChromeDriver();
    }

    if (static::runningInSail()) {
        self::ensureLaravelServiceIsAppUrl();
    }
}

from dusk.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.