本文整理匯總了TypeScript中@ephox/agar.Waiter.sTryUntil方法的典型用法代碼示例。如果您正苦於以下問題:TypeScript Waiter.sTryUntil方法的具體用法?TypeScript Waiter.sTryUntil怎麽用?TypeScript Waiter.sTryUntil使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類@ephox/agar.Waiter
的用法示例。
在下文中一共展示了Waiter.sTryUntil方法的10個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的TypeScript代碼示例。
示例1: TinyApis
TinyLoader.setup(function (editor, onSuccess, onFailure) {
const tinyApis = TinyApis(editor);
const tinyUi = TinyUi(editor);
const sOpenDialog = () => {
return GeneralSteps.sequence(Logger.ts('Open dialog and wait for it to be visible', [
tinyUi.sClickOnToolbar('click on preview toolbar', 'button'),
tinyUi.sWaitForPopup('wait for preview popup', '[role="dialog"] iframe')
]));
};
Pipeline.async({},
Log.steps('TBA', 'Preview: Set content, open dialog, click Close to close dialog. Open dialog, press escape and assert dialog closes', [
tinyApis.sSetContent('<strong>a</strong>'),
sOpenDialog(),
tinyUi.sClickOnUi('Click on Close button', '.tox-button:not(.tox-button--secondary)'),
Waiter.sTryUntil('Dialog should close', UiFinder.sNotExists(docBody, dialogSelector), 100, 3000),
sOpenDialog(),
Keyboard.sKeydown(doc, Keys.escape(), { }),
Waiter.sTryUntil('Dialog should close on esc', UiFinder.sNotExists(docBody, dialogSelector), 100, 3000)
])
, onSuccess, onFailure);
}, {
示例2: TinyApis
TinyLoader.setup((editor, onSuccess, onFailure) => {
const tinyApis = TinyApis(editor);
const dialogSelector = 'div.tox-dialog';
const toolbarButtonSelector = '[role="toolbar"] button[aria-label="Insert template"]';
const docBody = Element.fromDom(document.body);
Pipeline.async({}, [
Log.stepsAsStep('TBA', 'Template: Test selectedcontent replacement with default class', [
tinyApis.sSetContent('Text'),
tinyApis.sSetSelection([0, 0], 0, [0, 0], 4),
tinyApis.sSetSetting('templates', [{ title: 'a', description: 'b', content: '<h1 class="selcontent">This will be replaced</h1>' }]),
Mouse.sClickOn(Element.fromDom(editor.getContainer()), toolbarButtonSelector),
UiFinder.sWaitForVisible('Waited for dialog to be visible', docBody, dialogSelector),
Mouse.sClickOn(docBody, 'button.tox-button:contains(Save)'),
Waiter.sTryUntil('Dialog should close', UiFinder.sNotExists(docBody, dialogSelector), 100, 3000),
tinyApis.sAssertContent('<h1 class="selcontent">Text</h1>')
]),
Log.stepsAsStep('TBA', 'Template: Test selectedcontent replacement with custom class', [
tinyApis.sSetContent('Text'),
tinyApis.sSetSelection([0, 0], 0, [0, 0], 4),
tinyApis.sSetSetting('template_selected_content_classes', 'customSelected'),
tinyApis.sSetSetting('templates', [{ title: 'a', description: 'b', content: '<h1 class="customSelected">This will be replaced/h1>' }]),
Mouse.sClickOn(Element.fromDom(editor.getContainer()), toolbarButtonSelector),
UiFinder.sWaitForVisible('Waited for dialog to be visible', docBody, dialogSelector),
Mouse.sClickOn(docBody, 'button.tox-button:contains(Save)'),
Waiter.sTryUntil('Dialog should close', UiFinder.sNotExists(docBody, dialogSelector), 100, 3000),
tinyApis.sAssertContent('<h1 class="customSelected">Text</h1>')
])
], onSuccess, onFailure);
}, {
示例3: TinyApis
TinyLoader.setup(function (editor, onSuccess, onFailure) {
const tinyApis = TinyApis(editor);
const doc = TinyDom.fromDom(document);
Pipeline.async({}, [
Log.stepsAsStep('TBA', 'Link: should not get anchor info if not selected node', [
TestLinkUi.sClearHistory,
tinyApis.sSetContent('<p><a href="http://tinymce.com" class="shouldbekept" title="shouldalsobekept">tiny</a></p>'),
tinyApis.sSetSelection([0, 0, 0], 2, [0, 0, 0], 2),
tinyApis.sExecCommand('mcelink'),
TestLinkUi.sAssertDialogContents({
href: 'http://tinymce.com',
text: 'tiny',
title: 'shouldalsobekept',
target: ''
}),
FocusTools.sSetActiveValue(doc, 'http://something'),
Keyboard.sKeydown(doc, Keys.enter(), { }),
Waiter.sTryUntil(
'Wait until link is inserted',
tinyApis.sAssertContentPresence({
'a[href="http://something"]': 1,
'a[class="shouldbekept"]': 1,
'a[title="shouldalsobekept"]': 1
}),
100,
1000
),
TestLinkUi.sClearHistory
]),
Log.stepsAsStep('TBA', 'Link: should remove attributes if unset in the dialog', [
TestLinkUi.sClearHistory,
tinyApis.sSetContent('<p><a href="http://tinymce.com" class="shouldbekept" title="shouldnotbekept">tiny</a></p>'),
tinyApis.sSetSelection([0, 0, 0], 2, [0, 0, 0], 2),
tinyApis.sExecCommand('mcelink'),
TestLinkUi.sAssertDialogContents({
href: 'http://tinymce.com',
text: 'tiny',
title: 'shouldnotbekept',
target: ''
}),
FocusTools.sSetActiveValue(doc, 'http://something'),
TestLinkUi.sSetInputFieldValue('Title', ''),
Keyboard.sKeydown(doc, Keys.enter(), { }),
Waiter.sTryUntil(
'Wait until link is inserted',
tinyApis.sAssertContentPresence({
'a[href="http://something"]': 1,
'a[class="shouldbekept"]': 1,
'a[title="shouldnotbekept"]': 0
}),
100,
1000
),
TestLinkUi.sClearHistory
])
], onSuccess, onFailure);
}, {
示例4: TinyApis
TinyLoader.setup(function (editor, onSuccess, onFailure) {
const tinyApis = TinyApis(editor);
const tinyUi = TinyUi(editor);
const doc = Element.fromDom(document);
const body = Body.body();
Pipeline.async({},
Log.steps('TBA', 'Emoticons: Open dialog, verify custom categories listed and search for custom emoticon', [
tinyApis.sFocus,
tinyUi.sClickOnToolbar('click emoticons', 'button'),
Chain.asStep({}, [
tinyUi.cWaitForPopup('wait for popup', 'div[role="dialog"]'),
]),
FocusTools.sTryOnSelector('Focus should start on input', doc, 'input'),
Chain.asStep(body, [
UiFinder.cFindIn('[role="tablist"]'),
Assertions.cAssertStructure('check custom categories are shown', ApproxStructure.build((s, str, arr) => {
return s.element('div', {
children: [
tabElement(s, str, arr)('All'),
tabElement(s, str, arr)('People'),
tabElement(s, str, arr)('User Defined')
]
});
})),
]),
FocusTools.sSetActiveValue(doc, 'clock'),
Chain.asStep(doc, [
FocusTools.cGetFocused,
cFakeEvent('input')
]),
Waiter.sTryUntil(
'Wait until clock is the first choice (search should filter)',
Chain.asStep(body, [
UiFinder.cFindIn('.tox-collection__item:first'),
Chain.mapper((item) => {
return Attr.get(item, 'data-collection-item-value');
}),
Assertions.cAssertEq('Search should show custom clock', 'â˛')
]),
100,
1000
),
Keyboard.sKeydown(doc, Keys.tab(), {}),
FocusTools.sTryOnSelector('Focus should have moved to collection', doc, '.tox-collection__item'),
Keyboard.sKeydown(doc, Keys.enter(), {}),
Waiter.sTryUntil(
'Waiting for content update',
tinyApis.sAssertContent('<p>â˛</p>'),
100,
1000
)
])
, onSuccess, onFailure);
}, {
示例5: TinyApis
TinyLoader.setup((editor, onSuccess, onFailure) => {
const tinyApis = TinyApis(editor);
const docBody = Element.fromDom(document.body);
const dialogSelector = 'div.tox-dialog';
const toolbarButtonSelector = '[role="toolbar"] button[aria-label="Insert template"]';
Pipeline.async({}, [
Log.stepsAsStep('TBA', 'Template: Test basic template insertion', [
tinyApis.sSetSetting('templates', [{ title: 'a', description: 'b', content: '<strong>c</strong>' }]),
Mouse.sClickOn(Element.fromDom(editor.getContainer()), toolbarButtonSelector),
UiFinder.sWaitForVisible('Waited for dialog to be visible', docBody, dialogSelector),
Mouse.sClickOn(docBody, 'button.tox-button:contains(Save)'),
Waiter.sTryUntil('Dialog should close', UiFinder.sNotExists(docBody, dialogSelector), 100, 3000),
tinyApis.sAssertContent('<p><strong>c</strong></p>'),
]),
Log.stepsAsStep('TBA', 'Template: Test basic content replacement', [
tinyApis.sSetContent(''),
tinyApis.sSetSetting('templates', [{ title: 'a', description: 'b', content: '<p>{$name} {$email}</p>' }]),
tinyApis.sSetSetting('template_replace_values', { name: 'Tester', email: 'test@test.com' }),
Mouse.sClickOn(Element.fromDom(editor.getContainer()), toolbarButtonSelector),
UiFinder.sWaitForVisible('Waited for dialog to be visible', docBody, dialogSelector),
Mouse.sClickOn(docBody, 'button.tox-button:contains(Save)'),
Waiter.sTryUntil('Dialog should close', UiFinder.sNotExists(docBody, dialogSelector), 100, 3000),
tinyApis.sAssertContent('<p>Tester test@test.com</p>'),
]),
Log.stepsAsStep('TBA', 'Template: Test loading in snippet from other file', [
tinyApis.sSetContent(''),
tinyApis.sSetSetting('templates', [{ title: 'a', description: '<strong>b</strong>', url: '/project/tinymce/src/plugins/template/test/html/test_template.html' }]),
Mouse.sClickOn(Element.fromDom(editor.getContainer()), toolbarButtonSelector),
UiFinder.sWaitForVisible('Waited for dialog to be visible', docBody, dialogSelector),
Chain.asStep(docBody, [
UiFinder.cFindIn(dialogSelector),
UiFinder.cWaitForState('iframe is loaded', 'iframe', (elm) => {
const iframeDoc = elm.dom().contentDocument || elm.dom().contentWindow.document;
return iframeDoc.body.firstChild !== null;
})
]),
UiFinder.sExists(docBody, dialogSelector + ' p:contains("<strong>b</strong>")'),
Mouse.sClickOn(docBody, 'button.tox-button:contains(Save)'),
Waiter.sTryUntil('Dialog should close', UiFinder.sNotExists(docBody, dialogSelector), 100, 3000),
tinyApis.sAssertContent('<p><em>this is external</em></p>'),
]),
Log.stepsAsStep('TBA', 'Template: Test command', [
tinyApis.sSetContent(''),
tinyApis.sSetSetting('template_replace_values', { name: 'Tester' }),
tinyApis.sExecCommand('mceInsertTemplate', '<p>{$name}</p>'),
tinyApis.sAssertContent('<p>Tester</p>'),
])
], onSuccess, onFailure);
}, {
示例6: function
const sClickAndAssertEvents = function (tooltip, expected: EventLog[]) {
return GeneralSteps.sequence([
store.sClear,
tinyUi.sClickOnToolbar('Toggle sidebar', 'button[aria-label="' + tooltip + '"]'),
Waiter.sTryUntil('Checking sidebar callbacks', store.sAssertEq('Asserting sidebar callbacks', expected), 10, 1000),
]);
};
示例7: TinyApis
TinyLoader.setup(function (editor, onSuccess, onFailure) {
const tinyApis = TinyApis(editor);
const tinyActions = TinyActions(editor);
const selectionChangeState = Cell(false);
Pipeline.async({}, Env.webkit ?
Log.steps('TBA', 'TestCase-Table-TBA-Create lists within table cells and verify keyboard navigation for the cells', [
tinyApis.sFocus,
tinyApis.sSetContent(
'<table><tbody><tr><td><ul><li>a</li><li>b</li></ul></td></tr><tr><td><ul><li>c</li><li>d</li></ul></td></tr></tbody></table>'
),
tinyApis.sSetCursor([0, 0, 0, 0, 0, 1, 0], 0),
tinyActions.sContentKeydown(Keys.down(), {}),
tinyApis.sSetCursor([0, 0, 1, 0, 0, 0, 0], 0),
Step.sync(function () {
editor.on('SelectionChange', function () {
selectionChangeState.set(true);
});
}),
Waiter.sTryUntil(
'editor did not have correct selection',
Step.sync(function () {
RawAssertions.assertEq('state is true', true, selectionChangeState.get());
}),
100, 3000
),
tinyApis.sAssertSelection([0, 0, 1, 0, 0, 0, 0], 0, [0, 0, 1, 0, 0, 0, 0], 0)
])
: [], onSuccess, onFailure);
}, {
示例8:
const sSubmitDialog = (docBody) => {
return GeneralSteps.sequence(Logger.ts('Clicking on the Save button to close dialog', [
FocusTools.sSetFocus('Focus dialog', docBody, dialogSelector),
Mouse.sClickOn(docBody, 'button.tox-button:contains(Save)'),
Waiter.sTryUntil('Dialog should close', UiFinder.sNotExists(docBody, dialogSelector), 100, 3000)
]));
};
示例9: TinyApis
TinyLoader.setup(function (editor, onSuccess, onFailure) {
const tinyApis = TinyApis(editor);
const tinyActions = TinyActions(editor);
const selectionChangeState = Cell(false);
Pipeline.async({}, Env.webkit ? [
tinyApis.sFocus,
tinyApis.sSetContent(
'<table><tbody><tr><td><ul><li>a</li><li>b</li></ul></td></tr><tr><td><ul><li>c</li><li>d</li></ul></td></tr></tbody></table>'
),
tinyApis.sSetCursor([0, 0, 0, 0, 0, 1, 0], 0),
tinyActions.sContentKeydown(Keys.down(), {}),
tinyApis.sSetCursor([0, 0, 1, 0, 0, 0, 0], 0),
Step.sync(function () {
editor.on('selectionchange', function () {
selectionChangeState.set(true);
});
}),
Waiter.sTryUntil(
'editor did not have correct selection',
Step.sync(function () {
RawAssertions.assertEq('state is true', true, selectionChangeState.get());
}),
100, 3000
),
tinyApis.sAssertSelection([0, 0, 1, 0, 0, 0, 0], 0, [0, 0, 1, 0, 0, 0, 0], 0)
] : [], onSuccess, onFailure);
}, {
示例10: function
const sWaitForVisualBlocks = function (editor) {
return Waiter.sTryUntil('Wait background css to be applied to first element', Step.sync(function () {
const p = Element.fromDom(editor.getBody().firstChild);
const background = Css.get(p, 'background-image');
Assertions.assertEq('Paragraph should have a url background', true, background.indexOf('url(') === 0);
}), 10, 10000);
};