http-server & wait-on http://localhost:8080 && cypress run; kill(1) $!
If a command is terminated by the control operator &, the shell executes the command in the background in
a subshell.  The shell does not wait for the command to finish, and the return  status  is  0.
AND and OR lists are sequences of one of more pipelines separated by the &&  and  ||  control  operators,
respectively.  AND and OR lists are executed with left associativity.  An AND list has the form

       command1 && command2

command2 is executed if, and only if, command1 returns an exit status of zero.

An OR list has the form

       command1 || command2

command2  is  executed  if and only if command1 returns a non-zero exit status.  The return status of AND
and OR lists is the exit status of the last command executed in the list.
Commands separated  by  a ; are executed sequentially; the shell waits for each command to terminate in turn.  The
return status is the exit status of the last command executed.
send a signal to a process
kill [ -signal | -s signal ] pid ...
kill [ -L | -V, --version ]
kill -l  [ signal ]
source manpages: kill