blob: 1070618264f69531905c610e9b6ba867fec28238 [file]
/*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { expect, Page } from '@playwright/test';
import { waitForZeppelinReady } from '../utils';
import { BasePage } from './base-page';
import { HomePage } from './home-page';
export class NotebookUtil extends BasePage {
private homePage: HomePage;
constructor(page: Page) {
super(page);
this.homePage = new HomePage(page);
}
async createNotebook(notebookName: string): Promise<void> {
await this.homePage.navigateToHome();
// Auth is handled by the `setup` Playwright project + storageState; no per-call login here.
// Wait for Zeppelin to be fully ready
await waitForZeppelinReady(this.page);
// Wait for URL to not contain 'login' and for the notebook list to appear
await this.page.waitForURL(url => !url.toString().includes('#/login'), { timeout: 30000 });
await this.page.locator('zeppelin-node-list').waitFor({ state: 'attached', timeout: 30000 });
await expect(this.homePage.zeppelinNodeList).toBeVisible({ timeout: 90000 });
await this.homePage.createNote(notebookName);
}
}