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");
});