onPrepare и onComplete называются хуками жизненного цикла и выполняются на определенных этапах вашего выполнения. Транспортирующим компаниям доступно множество хуков жизненного цикла с помощью различных средств, в том числе от репортеров-жасминов, которых вы объявляете, как вы упомянули.
Обзор крючков жизненного цикла и порядок их срабатывания
--- beforeLaunch
--- onPrepare (set in conf) ***reporters initialized here
--- jasmineStarted (set in reporter)
--- beforeAll
--- suiteStarted (set in reporter)
--- specStarted (set in reporter)
--- beforeEach (set in testFile)
+++ afterEach (set in testFile)
+++ specDone (set in reporter)
+++ suiteDone (set in reporter)
+++ afterAll
+++ jasmineDone (set in reporter)
+++ onComplete (set in conf)
+++ afterLaunch
Из вашего вопроса не ясно, в чем заключается ваша проблема, но я предполагаю, что у вас возникли проблемы с вашим репортером html, потому что вы объявляете об этом в onComplete.
У журналистов Жасмин есть несколько важных хуков жизненного цикла:
( jasmineStarted, jasmineDone, suiteStarted, suiteDone, specStarted, specDone )
но если вы посмотрите на приведенный выше обзор, который я вставил, то увидите, что все эти перехватчики жизненного цикла репортера происходят до вызова onComplete. Если вы объявите своего репортера в onComplete вместо onPrepare, эти этапы жизненного цикла уже пройдены, и над ними не будет выполнено никаких действий.
Подробнее о назначении хуков жизненного цикла Protractor вы можете прочитать в прикрепленной ссылке.
https://github.com/angular/protractor/blob/master/exampleTypescript/conf.ts
и крючки жизненного цикла Jasmine Reporter здесь.
https://jasmine.github.io/api/3.3/Reporter.html
Надеюсь, что ответит на ваши вопросы, но дайте мне знать, если я неправильно понял.