mirror of
https://github.com/gristlabs/grist-core.git
synced 2024-10-27 20:44:07 +00:00
00b88fd683
Summary: Column and widget descriptions now support links in text. Test Plan: Updated Reviewers: georgegevoian Reviewed By: georgegevoian Differential Revision: https://phab.getgrist.com/D3981
108 lines
4.2 KiB
TypeScript
108 lines
4.2 KiB
TypeScript
import { assert, driver, Key } from 'mocha-webdriver';
|
|
import * as gu from 'test/nbrowser/gristUtils';
|
|
import { setupTestSuite } from 'test/nbrowser/testUtils';
|
|
|
|
|
|
describe('DescriptionWidget', function() {
|
|
this.timeout(20000);
|
|
const cleanup = setupTestSuite();
|
|
|
|
before(async () => {
|
|
const mainSession = await gu.session().teamSite.login();
|
|
await mainSession.tempDoc(cleanup, "CardView.grist", { load: true });
|
|
await gu.openWidgetPanel();
|
|
});
|
|
|
|
it('should support basic edition in right panel', async () => {
|
|
const newWidgetDesc = "This is the widget description\nIt is in two lines";
|
|
const rightPanelDescriptionInput = await driver.find('.test-right-panel .test-right-widget-description');
|
|
await rightPanelDescriptionInput.click();
|
|
await gu.clearInput();
|
|
await rightPanelDescriptionInput.sendKeys(newWidgetDesc);
|
|
// Click on other input to unselect descriptionInput
|
|
await driver.find('.test-right-panel .test-right-widget-title').click();
|
|
await checkDescValueInWidgetTooltip("Table", newWidgetDesc);
|
|
});
|
|
|
|
it('should support basic edition in widget popup', async () => {
|
|
const widgetName = "Table";
|
|
const newWidgetDescFirstLine = "First line of the description";
|
|
const newWidgetDescSecondLine = "Second line of the description";
|
|
|
|
await addWidgetDescription(widgetName, newWidgetDescFirstLine, newWidgetDescSecondLine);
|
|
await checkDescValueInWidgetTooltip(widgetName, `${newWidgetDescFirstLine}\n${newWidgetDescSecondLine}`);
|
|
});
|
|
|
|
it('should show info tooltip only if there is a description', async () => {
|
|
const newWidgetDesc = "New description for widget Table";
|
|
|
|
await addWidgetDescription("Table", newWidgetDesc);
|
|
|
|
assert.isFalse(await getWidgetTooltip("Single card").isPresent());
|
|
assert.isTrue(await getWidgetTooltip("Table").isPresent());
|
|
|
|
await checkDescValueInWidgetTooltip("Table", newWidgetDesc);
|
|
});
|
|
|
|
it('shows link in a description', async () => {
|
|
await addWidgetDescription("Table", "Some text with a https://www.grist.com link");
|
|
|
|
assert.isFalse(await getWidgetTooltip("Single card").isPresent());
|
|
assert.isTrue(await getWidgetTooltip("Table").isPresent());
|
|
|
|
await getWidgetTooltip("Table").click();
|
|
await waitForTooltip();
|
|
const descriptionTooltip = await driver
|
|
.find('.test-widget-info-tooltip-popup');
|
|
assert.equal(await descriptionTooltip.getText(), "Some text with a \nhttps://www.grist.com link");
|
|
assert.equal(await descriptionTooltip.find(".test-text-link a").getAttribute('href'), "https://www.grist.com/");
|
|
assert.equal(await descriptionTooltip.find(".test-text-link").getText(), "https://www.grist.com");
|
|
});
|
|
});
|
|
|
|
async function waitForEditPopup() {
|
|
await gu.waitToPass(async () => {
|
|
assert.isTrue(await driver.find(".test-widget-title-popup").isDisplayed());
|
|
});
|
|
}
|
|
|
|
async function waitForTooltip() {
|
|
await gu.waitToPass(async () => {
|
|
assert.isTrue(await driver.find(".test-widget-info-tooltip-popup").isDisplayed());
|
|
});
|
|
}
|
|
|
|
function getWidgetTitle(widgetName: string) {
|
|
return driver.findContent('.test-widget-title-text', `${widgetName}`);
|
|
}
|
|
|
|
function getWidgetTooltip(widgetName: string) {
|
|
return getWidgetTitle(widgetName).findClosest(".test-viewsection-title").find(".test-widget-info-tooltip");
|
|
}
|
|
|
|
async function addWidgetDescription(widgetName: string, desc: string, descSecondLine: string = "") {
|
|
// Click on the title and open the edition popup
|
|
await getWidgetTitle(widgetName).click();
|
|
await waitForEditPopup();
|
|
const widgetEditPopup = await driver.find('.test-widget-title-popup');
|
|
const widgetDescInput = await widgetEditPopup.find('.test-widget-title-section-description-input');
|
|
|
|
// Edit the description of the widget inside the popup
|
|
await widgetDescInput.click();
|
|
await gu.clearInput();
|
|
await widgetDescInput.sendKeys(desc);
|
|
if (descSecondLine !== "") {
|
|
await widgetDescInput.sendKeys(Key.ENTER, descSecondLine);
|
|
}
|
|
await widgetDescInput.sendKeys(Key.CONTROL, Key.ENTER);
|
|
await gu.waitForServer();
|
|
}
|
|
|
|
async function checkDescValueInWidgetTooltip(widgetName: string, desc: string) {
|
|
await getWidgetTooltip(widgetName).click();
|
|
await waitForTooltip();
|
|
const descriptionTooltip = await driver
|
|
.find('.test-widget-info-tooltip-popup');
|
|
assert.equal(await descriptionTooltip.getText(), desc);
|
|
}
|