Before this commit, some views appeared broken on mobile. We don't consider this as a bug because Odoo is not supposed to be responsive in Community edition. This feature is only available on Enterprise. This commit aims at clarifying this situation by clearly moving the base requirements to support browsers' responsive to the Enterprise edition and stating that the Community edition only targets desktop. It's important to note that, for technical reasons, some responsive-related JS/CSS code may still be present in the Community codebase but they are not meant to provide any explicit or implicit support for responsive/mobile devices. Technically speaking, this commit removes the viewport meta tag. This change will then force the "desktop-like" rendering even on small screens for the Community edition and will keep the current behavior (scaling/zooming on small screens) for the Enterprise edition. By doing this we do not let the users think that something is broken and must be fixed. So, in Community edition, desktop is always displayed; In Enterprise edition, Responsive Web Design is available. We also had to adapt a test to be able to apply XPath adding viewport meta tag in enterprise. Task ID: 2090202
43 lines
1.6 KiB
Python
43 lines
1.6 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
import re
|
|
import odoo.tests
|
|
|
|
RE_ONLY = re.compile('QUnit\.only\(')
|
|
|
|
|
|
@odoo.tests.tagged('post_install', '-at_install')
|
|
class WebSuite(odoo.tests.HttpCase):
|
|
|
|
def test_js(self):
|
|
# webclient desktop test suite
|
|
self.phantom_js('/web/tests?mod=web&failfast', "", "", login='admin', timeout=1800)
|
|
|
|
def test_check_suite(self):
|
|
# verify no js test is using `QUnit.only` as it forbid any other test to be executed
|
|
self._check_only_call('web.qunit_suite')
|
|
self._check_only_call('web.qunit_mobile_suite')
|
|
|
|
def _check_only_call(self, suite):
|
|
# As we currently aren't in a request context, we can't render `web.layout`.
|
|
# redefinied it as a minimal proxy template.
|
|
self.env.ref('web.layout').write({'arch_db': '<t t-name="web.layout"><head><meta charset="utf-8"/><t t-raw="head"/></head></t>'})
|
|
|
|
for asset in self.env['ir.qweb']._get_asset_content(suite, options={})[0]:
|
|
filename = asset['filename']
|
|
if not filename or asset['atype'] != 'text/javascript':
|
|
continue
|
|
with open(filename, 'rb') as fp:
|
|
if RE_ONLY.search(fp.read().decode('utf-8')):
|
|
self.fail("`QUnit.only()` used in file %r" % asset['url'])
|
|
|
|
|
|
@odoo.tests.tagged('post_install', '-at_install')
|
|
class MobileWebSuite(odoo.tests.HttpCase):
|
|
browser_size = '375x667'
|
|
|
|
def test_mobile_js(self):
|
|
# webclient mobile test suite
|
|
self.phantom_js('/web/tests/mobile?mod=web&failfast', "", "", login='admin', timeout=1800)
|