Try replacing the sleep 10
command with this:
curl --head -X GET --retry 60 --retry-connrefused --retry-delay 1 http://localhost:3000
This code will send a request every second for sixty seconds to see if the app is up before moving on. Once the app is up this command will get a positive response and then allow you to run your E2E test.
See how you get on with it.