Files
design-themes/test_themes/tests/test_crawl.py
T
Soukéina Bojabza a2c0751656 [FIX] test_themes, theme_*: fix not working theme tours
*: loftspace, real_estate

In commit [1], the test for the "Loftspace" and "Real Estate" themes has
been disabled, as their tour was not working.

This commit fixes the tours and reenables the test for these themes. The
issue was coming from the fact that they were trying to drop more
snippets than there really are, which made an acces to the array at an
inexisting index.

[1]: https://github.com/odoo/design-themes/commit/04f90cd883826bb8e4cbf8975aff6c14bf3c64db

closes odoo/design-themes#978

X-original-commit: 4c3d843615
Signed-off-by: Quentin Smetz (qsm) <qsm@odoo.com>
2024-10-01 20:29:19 +00:00

53 lines
2.7 KiB
Python

# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo.tests import HttpCase, tagged
@tagged('post_install', '-at_install')
class Crawler(HttpCase):
def test_01_crawl_every_themes(self):
""" Crawl every website (and so every themes) to ensure all themes can
be rendered and do not crash.
"""
Website = self.env['website']
websites_themes = Website.get_test_themes_websites()
assert len(websites_themes) == len(self.env.ref('base.module_test_themes').dependencies_id)
websites_themes_names = websites_themes.mapped('name')
def test_crawling():
for website in websites_themes.filtered(lambda w: w.theme_id.name != 'theme_default'):
# Ensure theme is rendering without crashing
r = self.url_open('/?fw=%s&debug=assets' % website.id)
self.assertEqual(r.status_code, 200, "Ensure theme is rendering without crashing")
# Ensure correct theme is actually loaded, see commit message
theme_asset_url = self.env['ir.asset']._get_asset_bundle_url('web.assets_frontend.css', 'debug', {'website_id': website.id})
self.assertTrue(theme_asset_url in r.text)
r = self.url_open(theme_asset_url)
self.assertTrue('/%s/static/src' % website.theme_id.name in r.text, "Ensure theme is actually loaded")
# Ensure other website/themes are not loaded
for name in websites_themes_names:
if name != website.theme_id.name:
self.assertFalse('/%s/static/src' % name in r.text, "Ensure other themes do not pollute current one")
# 1. Test as public user
test_crawling()
# 2. Test as admin
self.authenticate('admin', 'admin')
test_crawling()
# Note: this test is also really useful to build the default pages
# automatically by adding cr.commit() at the end of the tour
def test_02_homepage_tour_every_theme(self):
# TODO All the theme tours that are runned during this test should be
# improved so that each step properly checks that the previous step
# actually had an effect (as those tours are normally made to display to
# the user and were not designed for testing). However, this is already
# really useful as only checking if *entering* edit mode in each theme
# does not crash is already covering most issues that can be created
# when designing a theme at the moment.
Website = self.env['website']
websites_themes = Website.get_test_themes_websites()
for website in websites_themes:
self.start_tour(f"/web?fw={website.id}", 'homepage', login='admin')