mirror of
https://github.com/LizardByte/Sunshine.git
synced 2026-10-23 03:28:06 +09:00
fix(ci): stabilize web tests and retain coverage on failure (#5921)
This commit is contained in:
1 parent
bc188c2ce2
commit
75d3897fe2
2 files changed
+23
-10
No files matched your search
@@ -7,11 +7,10 @@ vi.mock('../../src_assets/common/assets/web/Navbar.vue', () => ({
|
|||||||
|
|
||||||
import Troubleshooting from '../../src_assets/common/assets/web/Troubleshooting.vue'
|
import Troubleshooting from '../../src_assets/common/assets/web/Troubleshooting.vue'
|
||||||
import createSunshineI18n from '../../src_assets/common/assets/web/locale.js'
|
import createSunshineI18n from '../../src_assets/common/assets/web/locale.js'
|
||||||
import pt from '../../src_assets/common/assets/web/public/assets/locale/pt.json'
|
import en from '../../src_assets/common/assets/web/public/assets/locale/en.json'
|
||||||
import ptBR from '../../src_assets/common/assets/web/public/assets/locale/pt_BR.json'
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Mount troubleshooting with mocked API responses and optional real translations.
|
* @brief Mount troubleshooting with mocked API responses and an optional Vue I18n instance.
|
||||||
*
|
*
|
||||||
* @param {string} platform Host platform.
|
* @param {string} platform Host platform.
|
||||||
* @param {string} gamepadDriver Selected gamepad driver.
|
* @param {string} gamepadDriver Selected gamepad driver.
|
||||||
@@ -77,12 +76,21 @@ afterEach(() => {
|
|||||||
|
|
||||||
describe('virtual input troubleshooting', () => {
|
describe('virtual input troubleshooting', () => {
|
||||||
it.each([
|
it.each([
|
||||||
['pt', pt],
|
['valid', false],
|
||||||
['pt_BR', ptBR],
|
['malformed', true],
|
||||||
])('renders Linux permissions and device management with the bundled %s catalog', async (locale, catalog) => {
|
])('renders Linux permissions and device management with %s translation messages', async (_description, malformed) => {
|
||||||
|
const catalog = structuredClone(en)
|
||||||
|
catalog._common.loading = malformed ? 'Loadingchar@@0' : 'Translated loading'
|
||||||
|
catalog.troubleshooting.driver_release_checking = malformed ? 'Checkingchar@@0' : 'Translated checking'
|
||||||
|
catalog.troubleshooting.permissions_name = malformed ? 'Permissionchar@@0' : 'Translated permission'
|
||||||
|
catalog.apps.delete_confirm = 'Delete translated {name}?'
|
||||||
|
catalog.troubleshooting.troubleshooting = 'Translated troubleshooting'
|
||||||
|
catalog.troubleshooting.unpair_title = 'Translated unpair'
|
||||||
|
catalog.troubleshooting.logs = 'Translated logs'
|
||||||
|
|
||||||
vi.spyOn(console, 'error').mockImplementation(() => {})
|
vi.spyOn(console, 'error').mockImplementation(() => {})
|
||||||
vi.stubGlobal('fetch', vi.fn(async url => ({
|
vi.stubGlobal('fetch', vi.fn(async url => ({
|
||||||
json: async () => url === './api/configLocale' ? { locale } : catalog,
|
json: async () => url === './api/configLocale' ? { locale: 'de' } : catalog,
|
||||||
})))
|
})))
|
||||||
const i18n = await createSunshineI18n()
|
const i18n = await createSunshineI18n()
|
||||||
const wrapper = await mountTroubleshooting('linux', 'none', {}, [
|
const wrapper = await mountTroubleshooting('linux', 'none', {}, [
|
||||||
@@ -90,13 +98,17 @@ describe('virtual input troubleshooting', () => {
|
|||||||
], i18n)
|
], i18n)
|
||||||
|
|
||||||
try {
|
try {
|
||||||
expect(i18n.global.t('_common.loading')).toBe('Loading...')
|
expect(i18n.global.t('_common.loading')).toBe(malformed ? en._common.loading : catalog._common.loading)
|
||||||
expect(i18n.global.t('troubleshooting.driver_release_checking')).toBe('Checking...')
|
expect(i18n.global.t('troubleshooting.driver_release_checking')).toBe(
|
||||||
|
malformed ? en.troubleshooting.driver_release_checking : catalog.troubleshooting.driver_release_checking
|
||||||
|
)
|
||||||
expect(i18n.global.t('apps.delete_confirm', { name: 'Moonlight' })).toBe(
|
expect(i18n.global.t('apps.delete_confirm', { name: 'Moonlight' })).toBe(
|
||||||
catalog.apps.delete_confirm.replace('{name}', 'Moonlight')
|
catalog.apps.delete_confirm.replace('{name}', 'Moonlight')
|
||||||
)
|
)
|
||||||
expect(wrapper.get('h1').text()).toBe(catalog.troubleshooting.troubleshooting)
|
expect(wrapper.get('h1').text()).toBe(catalog.troubleshooting.troubleshooting)
|
||||||
expect(wrapper.get('.permission-table-shell th').text()).toBe('Permission')
|
expect(wrapper.get('.permission-table-shell th').text()).toBe(
|
||||||
|
malformed ? en.troubleshooting.permissions_name : catalog.troubleshooting.permissions_name
|
||||||
|
)
|
||||||
expect(wrapper.get('#unpair').text()).toBe(catalog.troubleshooting.unpair_title)
|
expect(wrapper.get('#unpair').text()).toBe(catalog.troubleshooting.unpair_title)
|
||||||
expect(wrapper.get('#logs').text()).toBe(catalog.troubleshooting.logs)
|
expect(wrapper.get('#logs').text()).toBe(catalog.troubleshooting.logs)
|
||||||
expect(wrapper.find('.permission-table-shell tbody tr').exists()).toBe(true)
|
expect(wrapper.find('.permission-table-shell tbody tr').exists()).toBe(true)
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ export default defineConfig({
|
|||||||
test: {
|
test: {
|
||||||
coverage: {
|
coverage: {
|
||||||
provider: 'v8',
|
provider: 'v8',
|
||||||
|
reportOnFailure: true, ///< Preserve CI coverage artifacts after test failures.
|
||||||
reporter: ['text', 'json', 'lcov'],
|
reporter: ['text', 'json', 'lcov'],
|
||||||
reportsDirectory: 'coverage',
|
reportsDirectory: 'coverage',
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in new issue
Block a user