認証が必要なAngularJSアプリケーションがあります。これは、Expressから提供されるより大きなプロジェクトの一部であり、独自のベースパス<base href="/path/to/app/">
に存在し/
ます。既存のアプリケーションには、すでにラウンドトリップログインがあります。ユーザーは、Angularアプリにアクセスする前にログインする必要があります。testacularを使用したe2eテストを除いて、これは正常に機能します。
サーバーでの認証を無効にすると、e2eテストは問題なく実行されます。例えば:
describe 'protected app', ->
it 'should display the index', ->
browser().navigateTo '/path/to/app'
expect(browser().location().url()).toBe '/'
it 'etc...'
明らかに、サーバー側の認証では、これは失敗します。最初にログインする必要があります。次のエラーが発生します。
Sandbox Error: Application document not accessible.
問題は、シナリオ内でログインしようとしたときに発生します。
describe 'protected app', ->
it 'should authenticate', ->
browser().navigateTo '../login'
#input('#email').enter('admin@example.com')
#input('#password').enter('secret')
#element('button').click()
it 'should display the index', ->
browser().navigateTo '/path/to/app'
expect(browser().location().url()).toBe '/'
it 'etc...'
これを実行すると(フォームに入力してクリックするかどうかに関係なく)、ログインページが読み込まれてフリーズします。Testacularは実行を完了することはなく、ログインページでハングするだけです。
Angular / Testacular / e2eテストの理解に欠陥がありますか、それともバグがありますか?