import { mount } from '@vue/test-utils'; import { createRouter, createWebHistory } from '@ionic/vue-router'; import { IonicVue, IonApp, IonRouterOutlet, IonPage, IonTabs, IonTabBar } from '@ionic/vue'; const App = { components: { IonApp, IonRouterOutlet }, template: '', } describe('ion-tab-bar', () => { it('should render in the top slot', async () => { const Tabs = { components: { IonPage, IonTabs, IonTabBar }, template: ` `, } const router = createRouter({ history: createWebHistory(process.env.BASE_URL), routes: [ { path: '/', component: Tabs } ] }); router.push('/'); await router.isReady(); const wrapper = mount(App, { global: { plugins: [router, IonicVue] } }); const innerHTML = wrapper.find('ion-tabs').html(); expect(innerHTML).toContain(`
`); }); it('should render in the bottom slot', async () => { const Tabs = { components: { IonPage, IonTabs, IonTabBar }, template: ` `, } const router = createRouter({ history: createWebHistory(process.env.BASE_URL), routes: [ { path: '/', component: Tabs } ] }); router.push('/'); await router.isReady(); const wrapper = mount(App, { global: { plugins: [router, IonicVue] } }); const innerHTML = wrapper.find('ion-tabs').html(); // TODO: Remove tabs="true" in Ionic Vue v6.0 expect(innerHTML).toContain(`
`); }); it('should render in the default slot', async () => { const Tabs = { components: { IonPage, IonTabs, IonTabBar }, template: ` `, } const router = createRouter({ history: createWebHistory(process.env.BASE_URL), routes: [ { path: '/', component: Tabs } ] }); router.push('/'); await router.isReady(); const wrapper = mount(App, { global: { plugins: [router, IonicVue] } }); const innerHTML = wrapper.find('ion-tabs').html(); // TODO: Remove tabs="true" in Ionic Vue v6.0 expect(innerHTML).toContain(`
`) }); // Verifies the fix for https://github.com/ionic-team/ionic-framework/issues/22642 it('should not fail on non tab button elements', async () => { const Tabs = { components: { IonPage, IonTabs, IonTabBar }, template: ` `, } const router = createRouter({ history: createWebHistory(process.env.BASE_URL), routes: [ { path: '/', component: Tabs } ] }); router.push('/'); await router.isReady(); const wrapper = mount(App, { global: { plugins: [router, IonicVue] } }); const innerHTML = wrapper.find('ion-tabs').html(); expect(innerHTML).toContain(`>`) }) });