The trackedModified call in the tracking logic has a bug that
incorrectly removes `null` from pathnames
Currently:
```
let pathname = parsed.href.replace(parsed.hash, '').replace(parsed.search, '')
```
Where if `parsed.hash` or `parsed.search` are missing (which is
mostly the case for FS files), the value is null
eg `{ hash: null, search: null}`
- In which case, we essentially trim `null`
converting `/mypath/nulldir/file.js` -> `/mypath/dir/filejs` and
breaking builds (see #4920 ).
Fix checks if `hash` or `search` are set before replacing them
Fixes#4920
* update (old) incorrect snapshots
The version changed, so it is save to update these.
* add `shadow` so that we can test `@tailwind base`
We were only using `font-bold`, but that doesn't require any base rules.
We try to only inject rules that are required, even for `base` related
rules.
Adding `shadow` will ensure that we can test that `base` rules have been
added.
We applied the same treatment for the sanity tests, where we ignore the
first line (the tailwind header).
An odd issue I have found is that diffing of big css files is _very_
slow. When te tests pass, then the first test takes `3302 ms`, however,
when it fails it takes `477482 ms` on my machine. That's almost 8
minutes.
* change specific selector to universal selector
This is the commit that we could "undo" in the future if we need it
again.
* simplify `relative-purge-paths` test
This test doesn't require the "reset" selector (whether it is super specific or universal)
Simplified it so that it tests the relative purge config and nothing else.
* added css tagged template literal helpers
This allows prettier to format the string as CSS. This improves formatting and will improve future diffs.
* drop tailwind headers in the sanity tests
Every time we bump the Tailwind version, the sanity tests fail, because
the current version is encoded in the fixture files.
This will ensure that all of the contents is still checked and the
header is skipped. The header will be tested against a regex to ensure
that it is still there.
This should be a small but nice QoL improvement, so that we don't have
to think about updating those tests whenever we fix bugs or land new
features.