VulpesOS/gaia/apps/search/test/marionette/search_rocketbar_test.js
OverSu b38dea0597 Publish Vulpes Preview 15 sources for desktop, Android and Tundra
Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
2026-09-30 23:13:03 +02:00

126 lines
3.8 KiB
JavaScript
Executable file

'use strict';
var assert = require('assert');
var Rocketbar = require('../../../system/test/marionette/lib/rocketbar.js');
var Server = require('../../../../shared/test/integration/server');
marionette('Search - Rocketbar Test', function() {
var client = marionette.client({
profile: require(__dirname + '/client_options.js'),
desiredCapabilities: { raisesAccessibilityExceptions: false }
});
var home, search, rocketbar, system, server;
var providers, searchTemplate;
var phoneIdentifier =
'app://communications.gaiamobile.org/manifest.webapp-dialer';
suiteSetup(function(done) {
Server.create(__dirname + '/fixtures/', function(err, _server) {
server = _server;
done();
});
});
setup(function() {
home = client.loader.getAppClass('homescreen');
system = client.loader.getAppClass('system');
search = client.loader.getAppClass('search');
rocketbar = new Rocketbar(client);
system.waitForFullyLoaded();
searchTemplate = server.url('sample.html') + '?q=';
providers = {
version: search.searchDataVersion(),
providers: {
'first': {
title: 'first',
searchUrl: searchTemplate + '{searchTerms}',
suggestUrl: server.url('suggestions_one.json')
}
}
};
mockSearch();
home.waitForLaunch();
rocketbar.homescreenFocus();
});
function mockSearch() {
client.settings.set('search.suggestions.enabled', true);
client.settings.set('search.cache', providers);
client.settings.set('search.provider', 'first');
}
function assertThatUrlContains(text) {
rocketbar.appTitleFocus();
client.waitFor(function() {
var value = rocketbar.input.getAttribute('value');
var searchText = text.replace(' ', '%20');
return value === (searchTemplate + searchText);
});
}
test('General walkthrough', function() {
search.triggerFirstRun(rocketbar);
var textToSearch = 'a test';
// Clear button shouldnt be visible when no text entered
assert.ok(!rocketbar.clear.displayed());
// Search for an app ane make sure it exists
rocketbar.enterText('Phone');
search.goToResults();
search.checkResult(phoneIdentifier, 'Phone');
// Press rocketbar close button, ensure the homescreen is
// now displayed
client.switchToFrame();
rocketbar.cancel.click();
client.apps.switchToApp(home.URL);
client.waitFor(function() {
return home.visibleIcons.length && home.visibleIcons[0].displayed();
});
// When we previously pressed close, when rocketbar reopens value
// should be empty
rocketbar.homescreenFocus();
assert.equal(rocketbar.input.getAttribute('value'), '');
// Search for an app again, this time press close after searching
rocketbar.enterText('Phone');
home.pressHomeButton();
client.waitFor(function() {
return home.visibleIcons.length && home.visibleIcons[0].displayed();
});
// If we press home button during a search, next time we focus the rocketbar
// previous result should be displayed
rocketbar.homescreenFocus();
search.goToResults();
search.checkResult(phoneIdentifier, 'Phone');
// Clear button should be visible when text entered
client.switchToFrame();
assert.ok(rocketbar.clear.displayed());
// Press clear button, input
rocketbar.clear.click();
assert.equal(rocketbar.input.getAttribute('value'), '');
assert.ok(!rocketbar.clear.displayed());
// Perform a search
rocketbar.enterText(textToSearch, true);
rocketbar.switchToBrowserFrame(searchTemplate);
});
test('Browser search', function() {
home.waitForLaunch();
rocketbar.homescreenFocus();
var textToSearch = 'a test';
rocketbar.performSearchInBrowser(textToSearch);
assertThatUrlContains(textToSearch);
});
});