В настоящее время я оцениваю Cypress для моей компании для нашего нового продукта, который использует AngularJS и Typescript.Мы заинтересованы в Cypress из-за его простоты и возможностей консоли, а также других нативных функций.Однако у меня большая проблема.Мы используем Google Oauth2 для нашей аутентификации, и я пытаюсь использовать нашу учетную запись службы для аутентификации, так как мы не хотим спамить Google запросами на аутентификацию.
Я искал Stackoverflow, их собственную документацию, GitHub и несколько блогов, и я не нашел хорошего решения.Я не хочу использовать Auth0.
Cypress.Commands.add('login', () => {
require('../helpers/login.js')
})
beforeEach(() => {
cy.login()
})
describe('My First Test', function() {
it('finds the content "Navigation Elements"', function() {
cy.visit('http://www.fakedomain.com/')
cy.contains('Home')
cy.contains('Customer')
cy.contains('Username')
cy.contains('CompanyLogo.png')
})
})
Журнал консоли выводит следующую информацию:
Service Token Set
core.js:16828 Angular is running in the development mode. Call
enableProdMode() to enable the production mode.
object.service.ts:22 object service constructor
cypress_runner.js:172385 Event: xhr
cypress_runner.js:172385 Method: POST
cypress_runner.js:172385 URL: http://www.ourfake.com/sockjs-
node/758/xdbld5dn/xhr_streaming?t=1560535055113
cypress_runner.js:172385 Stubbed: No
cypress_runner.js:172385 Request: {body: null}body: null__proto__:
Object
core.js:15723 ERROR TypeError: Cannot read property 'postMessage' of null
at NU (VM845 cb=gapi.loaded_0:175)
at Object._.BX (VM845 cb=gapi.loaded_0:175)
at KJ (VM845 cb=gapi.loaded_0:176)
at _.bY._.k.a7 (VM845 cb=gapi.loaded_0:194)
at Object._.gr (VM845 cb=gapi.loaded_0:185)
at _.bY._.k.H1 (VM845 cb=gapi.loaded_0:194)
at _.bY.Bea (VM845 cb=gapi.loaded_0:202)
at Object._.gr (VM845 cb=gapi.loaded_0:185)
at mO (VM845 cb=gapi.loaded_0:209)
at VM845 cb=gapi.loaded_0:249
defaultErrorLogger @ core.js:15723
push../node_modules/@angular/core/fesm5/core.js.ErrorHandler.handleError @ core.js:15771
next @ core.js:17770
schedulerFn @ core.js:13514
push../node_modules/rxjs/_esm5/internal/Subscriber.js.SafeSubscriber.__tryOrUnsub @ Subscriber.js:194
push../node_modules/rxjs/_esm5/internal/Subscriber.js.SafeSubscriber.next @ Subscriber.js:132
push../node_modules/rxjs/_esm5/internal/Subscriber.js.Subscriber._next @ Subscriber.js:76
push../node_modules/rxjs/_esm5/internal/Subscriber.js.Subscriber.next @ Subscriber.js:53
push../node_modules/rxjs/_esm5/internal/Subject.js.Subject.next @ Subject.js:47
push../node_modules/@angular/core/fesm5/core.js.EventEmitter.emit @ core.js:13498
(anonymous) @ core.js:17320
push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke @ zone.js:391
push../node_modules/zone.js/dist/zone.js.Zone.run @ zone.js:150
push../node_modules/@angular/core/fesm5/core.js.NgZone.runOutsideAngular @ core.js:17257
onHandleError @ core.js:17320
push../node_modules/zone.js/dist/zone.js.ZoneDelegate.handleError @ zone.js:395
push../node_modules/zone.js/dist/zone.js.Zone.runTask @ zone.js:198
push../node_modules/zone.js/dist/zone.js.ZoneTask.invokeTask @ zone.js:498
ZoneTask.invoke @ zone.js:487
timer @ zone.js:2281
invoke @ cypress_runner.js:76996
timerOverride @ cypress_runner.js:77090
setTimeout (async)
callThrough @ cypress_runner.js:77044
(anonymous) @ cypress_runner.js:77093
scheduleTask @ zone.js:2302
push../node_modules/zone.js/dist/zone.js.ZoneDelegate.scheduleTask @ zone.js:410
onScheduleTask @ zone.js:301
push../node_modules/zone.js/dist/zone.js.ZoneDelegate.scheduleTask @ zone.js:404
push../node_modules/zone.js/dist/zone.js.Zone.scheduleTask @ zone.js:238
push../node_modules/zone.js/dist/zone.js.Zone.scheduleMacroTask @ zone.js:261
scheduleMacroTaskWithCurrentZone @ zone.js:1245
(anonymous) @ zone.js:2317
proto.<computed> @ zone.js:1569
tp @ cb=gapi.loaded_0:118
(anonymous) @ cb=gapi.loaded_0:130
Ap @ cb=gapi.loaded_0:122
push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke @ zone.js:391
onInvoke @ core.js:17298
push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke @ zone.js:390
push../node_modules/zone.js/dist/zone.js.Zone.run @ zone.js:150
(anonymous) @ zone.js:889
push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask @ zone.js:423
onInvokeTask @ core.js:17289
push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask @ zone.js:422
push../node_modules/zone.js/dist/zone.js.Zone.runTask @ zone.js:195
drainMicroTaskQueue @ zone.js:601
push../node_modules/zone.js/dist/zone.js.ZoneTask.invokeTask @ zone.js:502
ZoneTask.invoke @ zone.js:487
timer @ zone.js:2281
invoke @ cypress_runner.js:76996
timerOverride @ cypress_runner.js:77090
setInterval (async)
callThrough @ cypress_runner.js:77044
(anonymous) @ cypress_runner.js:77093
scheduleTask @ zone.js:2302
push../node_modules/zone.js/dist/zone.js.ZoneDelegate.scheduleTask @ zone.js:410
onScheduleTask @ zone.js:301
push../node_modules/zone.js/dist/zone.js.ZoneDelegate.scheduleTask @ zone.js:404
push../node_modules/zone.js/dist/zone.js.Zone.scheduleTask @ zone.js:238
push../node_modules/zone.js/dist/zone.js.Zone.scheduleMacroTask @ zone.js:261
scheduleMacroTaskWithCurrentZone @ zone.js:1245
(anonymous) @ zone.js:2317
proto.<computed> @ zone.js:1569
(anonymous) @ login.service.ts:60
push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke @ zone.js:391
onInvoke @ core.js:17298
push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke @ zone.js:390
push../node_modules/zone.js/dist/zone.js.Zone.run @ zone.js:150
(anonymous) @ zone.js:889
push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask @ zone.js:423
onInvokeTask @ core.js:17289
push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask @ zone.js:422
push../node_modules/zone.js/dist/zone.js.Zone.runTask @ zone.js:195
drainMicroTaskQueue @ zone.js:601
push../node_modules/zone.js/dist/zone.js.ZoneTask.invokeTask @ zone.js:502
invokeTask @ zone.js:1744
globalZoneAwareCallback
Я ожидаю, что вы попадете на домашнюю страницу, и это не работает.