Using Go, multi module workspaces, the dependencies on ginkgo and gomega can be abstracted away:
test/
| - e2e_test.go
| - go.mod
| - go.sum
go.work
go.work.sum
go.mod
go.sum
string.go
// etc. other first party code
where the test module would be "used" in the go workspace and have the actual dependencies on gomega and ginkgo. A good reference for where this has worked in the past: https://github.com/Thiht/transactor