ログインにAuth0を使用するAngularアプリケーション(バージョン2.x.x)があります(Googleアカウントのみ受け付けています)。Auth0を使用して分度器e2eテストでどのように連続したアカウントにログインしますか?
私はユーザセッションがアクティブなときにアプリケーションの部分をテストする必要があるプロクターe2eテストスイートを持っています。これらのアクションを使用できるようにするには、ユーザーがログインするか、トークンをlocalStorageで使用可能にする必要があります。私は、例えば、分度器配列内の複数のスイートを実行したい:
describe('Accounts',() => {
login(user);
it('should show the dashboard',() => {
browser.sleep(4000);
const url = browser.getCurrentUrl();
expect(url).toEqual('http://localhost:4200/dashboard');
});
logout();
login(user2);
it('should show the dashboard 2',() => {
browser.sleep(4000);
const url = browser.getCurrentUrl();
expect(url).toEqual('http://localhost:4200/dashboard');
});
logout();
});
Login
とlogout
はヘルパー関数です。 Login
はGoogleフォームを経由してメールとアドレスを追加します。成功すると、json WebトークンがlocalStorageに追加されます。 LogoutはlocalStorageをクリアし、ユーザーをAuth0ロックに戻します。
Auth0がキャッシュにいくつかのものを格納しているため、2番目のテストは失敗します。 Login
はbrowser.get
で始まりますが、2番目の仕様には目立った変更はありません。 2回目のログインで「あなたのアカウントではありません」ボタンをクリックすると、以前ログインしたアカウントでAuth0がログインします。これは、Chromeのシークレットモードではない場合とは異なります。その場合、ログインできるアカウントのリストが表示されます。私が望むのは、私がlogin関数を呼び出すたびに入力フィールドを取得することです。
また、browser.get
がおそらく呼び出された後、私はのlocalStorageにJWTを設定することもできますが、私はstartSession
はJWTを生成し、localStorage.setItem('token', token)
でのlocalStorageに追加するヘルパー関数ですbrowser.executeScript(startSession(user.email))
を呼び出す場合、分度器は「言うのlocalStorageは定義されていません"、または" window is undefined "(window.localStorageを指定した場合)。
すべてのテストが個別に実行されていますが、すべてのテストを順番に実行できる継続的な統合プラットフォームに移行したいと考えています。
キャッシュをクリアしようとしました。ユーザーをログアウトしたにもかかわらず、以前にログインしたアカウントが(シークレットのみで)覚えています。
どうすればよいですか?
シークレットセッションを再開するにはどうすればよいですか?
どのように動的JWTをlocalStorageに注入しますか?
Auth0に保存されているものをクリアするにはどうすればよいですか?
他にもあります