summaryrefslogtreecommitdiff
path: root/cypress/e2e
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2022-06-11 15:53:45 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2022-06-11 15:53:45 +0900
commiteaf6ddd47496e884066006f1fb35e3a90aac5176 (patch)
tree28ddddfcb6d4379c66ac4f55536a47963a83444e /cypress/e2e
parentfeat: image cropping (#8808) (diff)
downloadmisskey-eaf6ddd47496e884066006f1fb35e3a90aac5176.tar.gz
misskey-eaf6ddd47496e884066006f1fb35e3a90aac5176.tar.bz2
misskey-eaf6ddd47496e884066006f1fb35e3a90aac5176.zip
update cypress
Diffstat (limited to 'cypress/e2e')
-rw-r--r--cypress/e2e/basic.cy.js149
-rw-r--r--cypress/e2e/widgets.cy.js65
2 files changed, 214 insertions, 0 deletions
diff --git a/cypress/e2e/basic.cy.js b/cypress/e2e/basic.cy.js
new file mode 100644
index 0000000000..eb5195c4b2
--- /dev/null
+++ b/cypress/e2e/basic.cy.js
@@ -0,0 +1,149 @@
+describe('Before setup instance', () => {
+ beforeEach(() => {
+ cy.resetState();
+ });
+
+ afterEach(() => {
+ // テスト終了直前にページ遷移するようなテストケース(例えばアカウント作成)だと、たぶんCypressのバグでブラウザの内容が次のテストケースに引き継がれてしまう(例えばアカウントが作成し終わった段階からテストが始まる)。
+ // waitを入れることでそれを防止できる
+ cy.wait(1000);
+ });
+
+ it('successfully loads', () => {
+ cy.visit('/');
+ });
+
+ 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');
+ });
+});
+
+describe('After setup instance', () => {
+ beforeEach(() => {
+ cy.resetState();
+
+ // インスタンス初期セットアップ
+ cy.registerUser('admin', 'pass', true);
+ });
+
+ afterEach(() => {
+ // テスト終了直前にページ遷移するようなテストケース(例えばアカウント作成)だと、たぶんCypressのバグでブラウザの内容が次のテストケースに引き継がれてしまう(例えばアカウントが作成し終わった段階からテストが始まる)。
+ // waitを入れることでそれを防止できる
+ cy.wait(1000);
+ });
+
+ it('successfully loads', () => {
+ cy.visit('/');
+ });
+
+ it('signup', () => {
+ cy.visit('/');
+
+ cy.intercept('POST', '/api/signup').as('signup');
+
+ 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.wait('@signup');
+ });
+});
+
+describe('After user signup', () => {
+ beforeEach(() => {
+ cy.resetState();
+
+ // インスタンス初期セットアップ
+ cy.registerUser('admin', 'pass', true);
+
+ // ユーザー作成
+ cy.registerUser('alice', 'alice1234');
+ });
+
+ afterEach(() => {
+ // テスト終了直前にページ遷移するようなテストケース(例えばアカウント作成)だと、たぶんCypressのバグでブラウザの内容が次のテストケースに引き継がれてしまう(例えばアカウントが作成し終わった段階からテストが始まる)。
+ // waitを入れることでそれを防止できる
+ cy.wait(1000);
+ });
+
+ it('successfully loads', () => {
+ cy.visit('/');
+ });
+
+ it('signin', () => {
+ cy.visit('/');
+
+ 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('suspend', function() {
+ 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}');
+
+ // TODO: cypressにブラウザの言語指定できる機能が実装され次第英語のみテストするようにする
+ cy.contains(/アカウントが凍結されています|This account has been suspended due to/gi);
+ });
+});
+
+describe('After user singed in', () => {
+ beforeEach(() => {
+ cy.resetState();
+
+ // インスタンス初期セットアップ
+ cy.registerUser('admin', 'pass', true);
+
+ // ユーザー作成
+ cy.registerUser('alice', 'alice1234');
+
+ cy.login('alice', 'alice1234');
+ });
+
+ afterEach(() => {
+ // テスト終了直前にページ遷移するようなテストケース(例えばアカウント作成)だと、たぶんCypressのバグでブラウザの内容が次のテストケースに引き継がれてしまう(例えばアカウントが作成し終わった段階からテストが始まる)。
+ // waitを入れることでそれを防止できる
+ cy.wait(1000);
+ });
+
+ it('successfully loads', () => {
+ cy.get('[data-cy-open-post-form]').should('be.visible');
+ });
+
+ it('note', () => {
+ 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();
+
+ cy.contains('Hello, Misskey!');
+ });
+});
+
+// TODO: 投稿フォームの公開範囲指定のテスト
+// TODO: 投稿フォームのファイル添付のテスト
+// TODO: 投稿フォームのハッシュタグ保持フィールドのテスト
diff --git a/cypress/e2e/widgets.cy.js b/cypress/e2e/widgets.cy.js
new file mode 100644
index 0000000000..56ad95ee94
--- /dev/null
+++ b/cypress/e2e/widgets.cy.js
@@ -0,0 +1,65 @@
+describe('After user signed in', () => {
+ beforeEach(() => {
+ cy.resetState();
+ cy.viewport('macbook-16');
+
+ // インスタンス初期セットアップ
+ cy.registerUser('admin', 'pass', true);
+
+ // ユーザー作成
+ cy.registerUser('alice', 'alice1234');
+
+ cy.login('alice', 'alice1234');
+ });
+
+ afterEach(() => {
+ // テスト終了直前にページ遷移するようなテストケース(例えばアカウント作成)だと、たぶんCypressのバグでブラウザの内容が次のテストケースに引き継がれてしまう(例えばアカウントが作成し終わった段階からテストが始まる)。
+ // waitを入れることでそれを防止できる
+ cy.wait(1000);
+ });
+
+ it('widget edit toggle is visible', () => {
+ cy.get('.mk-widget-edit').should('be.visible');
+ });
+
+ it('widget select should be visible in edit mode', () => {
+ cy.get('.mk-widget-edit').click();
+ cy.get('.mk-widget-select').should('be.visible');
+ });
+
+ it('first widget should be removed', () => {
+ cy.get('.mk-widget-edit').click();
+ cy.get('.customize-container:first-child .remove._button').click();
+ cy.get('.customize-container').should('have.length', 2);
+ });
+
+ function buildWidgetTest(widgetName) {
+ it(`${widgetName} widget should get added`, () => {
+ cy.get('.mk-widget-edit').click();
+ cy.get('.mk-widget-select select').select(widgetName, { force: true });
+ cy.get('.bg._modalBg.transparent').click({ multiple: true, force: true });
+ cy.get('.mk-widget-add').click({ force: true });
+ cy.get(`.mkw-${widgetName}`).should('exist');
+ });
+ }
+
+ buildWidgetTest('memo');
+ buildWidgetTest('notifications');
+ buildWidgetTest('timeline');
+ buildWidgetTest('calendar');
+ buildWidgetTest('rss');
+ buildWidgetTest('trends');
+ buildWidgetTest('clock');
+ buildWidgetTest('activity');
+ buildWidgetTest('photos');
+ buildWidgetTest('digitalClock');
+ buildWidgetTest('federation');
+ buildWidgetTest('postForm');
+ buildWidgetTest('slideshow');
+ buildWidgetTest('serverMetric');
+ buildWidgetTest('onlineUsers');
+ buildWidgetTest('jobQueue');
+ buildWidgetTest('button');
+ buildWidgetTest('aiscript');
+ buildWidgetTest('aichan');
+});