summaryrefslogtreecommitdiff
path: root/cypress
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2021-09-19 02:23:12 +0900
committerGitHub <noreply@github.com>2021-09-19 02:23:12 +0900
commit54e0a7f8a8d977c7befc255cc4950a86ac2e72fb (patch)
tree037bf47ed77a983ec51e6bc85134974e4433fd88 /cypress
parentfix style (diff)
downloadsharkey-54e0a7f8a8d977c7befc255cc4950a86ac2e72fb.tar.gz
sharkey-54e0a7f8a8d977c7befc255cc4950a86ac2e72fb.tar.bz2
sharkey-54e0a7f8a8d977c7befc255cc4950a86ac2e72fb.zip
feat: 凍結された場合のダイアログを実装 (#7811)
* feat: 凍結された場合のダイアログを実装 * Update CHANGELOG.md * Update basic.js * improve error handling * cypressなんもわからん * Update basic.js
Diffstat (limited to 'cypress')
-rw-r--r--cypress/integration/basic.js136
1 files changed, 108 insertions, 28 deletions
diff --git a/cypress/integration/basic.js b/cypress/integration/basic.js
index 69d59bc2c6..52bcdb58d0 100644
--- a/cypress/integration/basic.js
+++ b/cypress/integration/basic.js
@@ -1,12 +1,18 @@
describe('Basic', () => {
- before(() => {
- cy.request('POST', '/api/reset-db');
- });
-
beforeEach(() => {
+ cy.request('POST', '/api/reset-db').as('reset');
+ cy.get('@reset').its('status').should('equal', 204);
+ cy.clearLocalStorage();
+ cy.clearCookies();
cy.reload(true);
});
+ afterEach(() => {
+ // テスト終了直前にページ遷移するようなテストケース(例えばアカウント作成)だと、たぶんCypressのバグでブラウザの内容が次のテストケースに引き継がれてしまう(例えばアカウントが作成し終わった段階からテストが始まる)。
+ // waitを入れることでそれを防止できる
+ cy.wait(1000);
+ });
+
it('successfully loads', () => {
cy.visit('/');
});
@@ -14,56 +20,130 @@ describe('Basic', () => {
it('setup instance', () => {
cy.visit('/');
+ cy.intercept('POST', '/api/admin/accounts/create').as('signup');
+
cy.get('[data-cy-admin-username] input').type('admin');
-
cy.get('[data-cy-admin-password] input').type('admin1234');
-
cy.get('[data-cy-admin-ok]').click();
+
+ // なぜか動かない
+ //cy.wait('@signup').should('have.property', 'response.statusCode');
+ cy.wait('@signup');
});
it('signup', () => {
- cy.visit('/');
+ // インスタンス初期セットアップ
+ cy.request('POST', '/api/admin/accounts/create', {
+ username: 'admin',
+ password: 'pass',
+ }).as('setup');
- cy.get('[data-cy-signup]').click();
+ cy.get('@setup').then(() => {
+ cy.visit('/');
- cy.get('[data-cy-signup-username] input').type('alice');
+ cy.intercept('POST', '/api/signup').as('signup');
- cy.get('[data-cy-signup-password] input').type('alice1234');
-
- cy.get('[data-cy-signup-password-retype] input').type('alice1234');
+ cy.get('[data-cy-signup]').click();
+ cy.get('[data-cy-signup-username] input').type('alice');
+ cy.get('[data-cy-signup-password] input').type('alice1234');
+ cy.get('[data-cy-signup-password-retype] input').type('alice1234');
+ cy.get('[data-cy-signup-submit]').click();
- cy.get('[data-cy-signup-submit]').click();
+ cy.wait('@signup');
+ });
});
it('signin', () => {
- cy.visit('/');
+ // インスタンス初期セットアップ
+ cy.request('POST', '/api/admin/accounts/create', {
+ username: 'admin',
+ password: 'pass',
+ }).as('setup');
- cy.get('[data-cy-signin]').click();
+ cy.get('@setup').then(() => {
+ // ユーザー作成
+ cy.request('POST', '/api/signup', {
+ username: 'alice',
+ password: 'alice1234',
+ }).as('signup');
+ });
- cy.get('[data-cy-signin-username] input').type('alice');
+ cy.get('@signup').then(() => {
+ cy.visit('/');
- // Enterキーでサインインできるかの確認も兼ねる
- cy.get('[data-cy-signin-password] input').type('alice1234{enter}');
+ cy.intercept('POST', '/api/signin').as('signin');
+
+ cy.get('[data-cy-signin]').click();
+ cy.get('[data-cy-signin-username] input').type('alice');
+ // Enterキーでサインインできるかの確認も兼ねる
+ cy.get('[data-cy-signin-password] input').type('alice1234{enter}');
+
+ cy.wait('@signin');
+ });
});
it('note', () => {
cy.visit('/');
- //#region TODO: この辺はUI操作ではなくAPI操作でログインする
- cy.get('[data-cy-signin]').click();
+ // インスタンス初期セットアップ
+ cy.request('POST', '/api/admin/accounts/create', {
+ username: 'admin',
+ password: 'pass',
+ }).as('setup');
+
+ cy.get('@setup').then(() => {
+ // ユーザー作成
+ cy.request('POST', '/api/signup', {
+ username: 'alice',
+ password: 'alice1234',
+ }).as('signup');
+ });
- cy.get('[data-cy-signin-username] input').type('alice');
+ cy.get('@signup').then(() => {
+ cy.visit('/');
- // Enterキーでサインインできるかの確認も兼ねる
- cy.get('[data-cy-signin-password] input').type('alice1234{enter}');
- //#endregion
+ cy.intercept('POST', '/api/signin').as('signin');
- cy.get('[data-cy-open-post-form]').click();
+ cy.get('[data-cy-signin]').click();
+ cy.get('[data-cy-signin-username] input').type('alice');
+ cy.get('[data-cy-signin-password] input').type('alice1234{enter}');
- cy.get('[data-cy-post-form-text]').type('Hello, Misskey!');
+ cy.wait('@signin').as('signinEnd');
+ });
- cy.get('[data-cy-open-post-form-submit]').click();
+ cy.get('@signinEnd').then(() => {
+ cy.get('[data-cy-open-post-form]').click();
+ cy.get('[data-cy-post-form-text]').type('Hello, Misskey!');
+ cy.get('[data-cy-open-post-form-submit]').click();
- // TODO: 投稿した文字列が画面内にあるか(=タイムラインに流れてきたか)のテスト
+ cy.contains('Hello, Misskey!');
+ });
});
+
+ it('suspend', function() {
+ cy.request('POST', '/api/admin/accounts/create', {
+ username: 'admin',
+ password: 'pass',
+ }).its('body').as('admin');
+
+ cy.request('POST', '/api/signup', {
+ username: 'alice',
+ password: 'pass',
+ }).its('body').as('alice');
+
+ cy.then(() => {
+ cy.request('POST', '/api/admin/suspend-user', {
+ i: this.admin.token,
+ userId: this.alice.id,
+ });
+
+ cy.visit('/');
+
+ cy.get('[data-cy-signin]').click();
+ cy.get('[data-cy-signin-username] input').type('alice');
+ cy.get('[data-cy-signin-password] input').type('alice1234{enter}');
+
+ cy.contains('アカウントが凍結されています');
+ });
+ });
});