mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-02-24 23:48:13 -05:00
fix cross-browser support (#164)
closes https://github.com/TryGhost/Ghost/issues/7149 - fix tests in Safari - fix template tag issue in IE and edge - various IE css fixes
This commit is contained in:
parent
6b7591c2bd
commit
877dc89ddb
8 changed files with 36 additions and 21 deletions
|
@ -55,6 +55,15 @@ export default Component.extend({
|
|||
let template = document.createElement('template');
|
||||
template.innerHTML = html;
|
||||
let fragment = template.content;
|
||||
|
||||
if (!fragment) {
|
||||
fragment = document.createDocumentFragment();
|
||||
|
||||
while (template.childNodes[0]) {
|
||||
fragment.appendChild(template.childNodes[0]);
|
||||
}
|
||||
}
|
||||
|
||||
let dropzones = fragment.querySelectorAll('.js-drop-zone');
|
||||
let components = this.get('imageUploadComponents');
|
||||
|
||||
|
|
|
@ -33,6 +33,7 @@
|
|||
}
|
||||
|
||||
.splitbtn .btn:first-child:not(:last-child):not(.dropdown-toggle) {
|
||||
height: 31px;
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
}
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
margin: 1.6em 0;
|
||||
min-height: 130px;
|
||||
width: 100%;
|
||||
height: 130px;
|
||||
background: #f6f7f8;
|
||||
border-radius: 4px;
|
||||
color: #808284;
|
||||
|
|
|
@ -10,23 +10,27 @@ import startApp from '../helpers/start-app';
|
|||
import destroyApp from '../helpers/destroy-app';
|
||||
import { authenticateSession } from 'ghost-admin/tests/helpers/ember-simple-auth';
|
||||
|
||||
const originalUserAgent = window.navigator.userAgent;
|
||||
const originalAgent = window.navigator.userAgent;
|
||||
|
||||
const _setUserAgent = function (userAgent) {
|
||||
let userAgentProp = {get() { return userAgent; }, configurable: true};
|
||||
Object.defineProperty(window.navigator, 'userAgent', userAgentProp);
|
||||
};
|
||||
const setUserAgent = function (userAgent) {
|
||||
let userAgentProp = {
|
||||
get() {
|
||||
return userAgent;
|
||||
},
|
||||
configurable: true
|
||||
};
|
||||
|
||||
const stubUserAgent = function (userAgent) {
|
||||
if (window.navigator.userAgent !== userAgent) {
|
||||
_setUserAgent(userAgent);
|
||||
try {
|
||||
Object.defineProperty(window.navigator, 'userAgent', userAgentProp);
|
||||
} catch (e) {
|
||||
window.navigator = Object.create(window.navigator, {
|
||||
userAgent: userAgentProp
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
const restoreUserAgent = function () {
|
||||
if (window.navigator.userAgent !== originalUserAgent) {
|
||||
_setUserAgent(originalUserAgent);
|
||||
}
|
||||
setUserAgent(originalAgent);
|
||||
};
|
||||
|
||||
describe('Acceptance: Ghost Desktop', function() {
|
||||
|
@ -55,7 +59,7 @@ describe('Acceptance: Ghost Desktop', function() {
|
|||
});
|
||||
|
||||
it('displays alert for broken version', function() {
|
||||
stubUserAgent('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) ghost-desktop/0.4.0 Chrome/51.0.2704.84 Electron/1.2.2 Safari/537.36');
|
||||
setUserAgent('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) ghost-desktop/0.4.0 Chrome/51.0.2704.84 Electron/1.2.2 Safari/537.36');
|
||||
|
||||
visit('/');
|
||||
|
||||
|
@ -67,7 +71,7 @@ describe('Acceptance: Ghost Desktop', function() {
|
|||
});
|
||||
|
||||
it('doesn\'t display alert for working version', function () {
|
||||
stubUserAgent('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) ghost-desktop/0.5.1 Chrome/51.0.2704.84 Electron/1.2.2 Safari/537.36');
|
||||
setUserAgent('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) ghost-desktop/0.5.1 Chrome/51.0.2704.84 Electron/1.2.2 Safari/537.36');
|
||||
|
||||
visit('/');
|
||||
|
||||
|
|
|
@ -31,8 +31,8 @@ describeComponent(
|
|||
component._selectize.setValue(['item 3', 'item 2']);
|
||||
});
|
||||
|
||||
expect(component.get('value'), 'component value').to.deep.equal(['item 3', 'item 2']);
|
||||
expect(component.get('selection'), 'component selection').to.deep.equal(['item 3', 'item 2']);
|
||||
expect(component.get('value').toArray(), 'component value').to.deep.equal(['item 3', 'item 2']);
|
||||
expect(component.get('selection').toArray(), 'component selection').to.deep.equal(['item 3', 'item 2']);
|
||||
});
|
||||
}
|
||||
);
|
||||
|
|
|
@ -188,7 +188,7 @@ describeModule(
|
|||
|
||||
run(() => { notifications.showAPIError(resp); });
|
||||
|
||||
expect(notifications.get('content')).to.deep.equal([
|
||||
expect(notifications.get('content').toArray()).to.deep.equal([
|
||||
{message: 'There was a problem on the server, please try again.', status: 'alert', type: 'error', key: 'api-error'}
|
||||
]);
|
||||
|
||||
|
@ -197,7 +197,7 @@ describeModule(
|
|||
run(() => {
|
||||
notifications.showAPIError(resp, {defaultErrorText: 'Overridden default'});
|
||||
});
|
||||
expect(notifications.get('content')).to.deep.equal([
|
||||
expect(notifications.get('content').toArray()).to.deep.equal([
|
||||
{message: 'Overridden default', status: 'alert', type: 'error', key: 'api-error'}
|
||||
]);
|
||||
});
|
||||
|
|
|
@ -13,7 +13,7 @@ const testInvalidUrl = function (url) {
|
|||
validator.check(navItem, 'url');
|
||||
|
||||
expect(validator.get('passed'), `"${url}" passed`).to.be.false;
|
||||
expect(navItem.get('errors').errorsFor('url')).to.deep.equal([{
|
||||
expect(navItem.get('errors').errorsFor('url').toArray()).to.deep.equal([{
|
||||
attribute: 'url',
|
||||
message: 'You must specify a valid URL or relative path'
|
||||
}]);
|
||||
|
@ -36,7 +36,7 @@ describe('Unit: Validator: nav-item', function () {
|
|||
validator.check(navItem, 'label');
|
||||
|
||||
expect(validator.get('passed')).to.be.false;
|
||||
expect(navItem.get('errors').errorsFor('label')).to.deep.equal([{
|
||||
expect(navItem.get('errors').errorsFor('label').toArray()).to.deep.equal([{
|
||||
attribute: 'label',
|
||||
message: 'You must specify a label'
|
||||
}]);
|
||||
|
@ -49,7 +49,7 @@ describe('Unit: Validator: nav-item', function () {
|
|||
validator.check(navItem, 'url');
|
||||
|
||||
expect(validator.get('passed')).to.be.false;
|
||||
expect(navItem.get('errors').errorsFor('url')).to.deep.equal([{
|
||||
expect(navItem.get('errors').errorsFor('url').toArray()).to.deep.equal([{
|
||||
attribute: 'url',
|
||||
message: 'You must specify a URL or relative path'
|
||||
}]);
|
||||
|
|
|
@ -13,7 +13,7 @@ const testInvalidUrl = function (url) {
|
|||
validator.check(slackObject, 'url');
|
||||
|
||||
expect(validator.get('passed'), `"${url}" passed`).to.be.false;
|
||||
expect(slackObject.get('errors').errorsFor('url')).to.deep.equal([{
|
||||
expect(slackObject.get('errors').errorsFor('url').toArray()).to.deep.equal([{
|
||||
attribute: 'url',
|
||||
message: 'The URL must be in a format like https://hooks.slack.com/services/<your personal key>'
|
||||
}]);
|
||||
|
|
Loading…
Add table
Reference in a new issue