diff --git a/plugins/linear-genome-view/src/LinearGenomeView/components/TracksContainer.tsx b/plugins/linear-genome-view/src/LinearGenomeView/components/TracksContainer.tsx
index 66f3bdaa38..dbdcc08928 100644
--- a/plugins/linear-genome-view/src/LinearGenomeView/components/TracksContainer.tsx
+++ b/plugins/linear-genome-view/src/LinearGenomeView/components/TracksContainer.tsx
@@ -162,7 +162,7 @@ function TracksContainer({
return (
{
clearCache()
clearAdapterCache()
+ // @ts-ignore
fetch.resetMocks()
+ // @ts-ignore
fetch.mockResponse(
generateReadBuffer(
url => new LocalFile(require.resolve(`../../test_data/volvox/${url}`)),
@@ -31,41 +33,25 @@ beforeEach(() => {
const delay = { timeout: 20000 }
test('opens an alignments track', async () => {
- const pm = getPluginManager()
- const state = pm.rootModel
- const { findByTestId, findByText, findAllByTestId } = render(
- ,
- )
+ const { view, findByTestId, findByText, findAllByTestId } = createView()
await findByText('Help')
- state.session.views[0].setNewView(5, 100)
+ view.setNewView(5, 100)
fireEvent.click(
- await findByTestId(
- 'htsTrackEntry-volvox_alignments_pileup_coverage',
- {},
- delay,
- ),
+ await findByTestId(hts('volvox_alignments_pileup_coverage'), {}, delay),
)
const { findByTestId: findByTestId1 } = within(
await findByTestId('Blockset-pileup', {}, delay),
)
expectCanvasMatch(
- await findByTestId1(
- 'prerendered_canvas_{volvox}ctgA:1..4,000-0_done',
- {},
- delay,
- ),
+ await findByTestId1(pc('{volvox}ctgA:1..4,000-0'), {}, delay),
)
const { findByTestId: findByTestId2 } = within(
await findByTestId('Blockset-snpcoverage', {}, delay),
)
expectCanvasMatch(
- await findByTestId2(
- 'prerendered_canvas_{volvox}ctgA:1..4,000-0_done',
- {},
- delay,
- ),
+ await findByTestId2(pc('{volvox}ctgA:1..4,000-0'), {}, delay),
)
const track = await findAllByTestId('pileup_overlay_canvas')
@@ -81,25 +67,22 @@ test('opens an alignments track', async () => {
}, 20000)
test('test that bam with small max height displays message', async () => {
- const pm = getPluginManager()
- const { findByTestId, findAllByText } = render()
+ const { findByTestId, findAllByText } = createView()
fireEvent.click(
- await findByTestId('htsTrackEntry-volvox_bam_small_max_height', {}, delay),
+ await findByTestId(hts('volvox_bam_small_max_height'), {}, delay),
)
await findAllByText('Max height reached', {}, delay)
}, 30000)
test('test snpcoverage doesnt count snpcoverage', async () => {
- const pm = getPluginManager()
- const state = pm.rootModel
- const { findByText, findByTestId } = render()
+ const { view, findByTestId, findByText } = createView()
await findByText('Help')
- state.session.views[0].setNewView(0.03932, 67884.16536402702)
+ view.setNewView(0.03932, 67884.16536402702)
// load track
fireEvent.click(
- await findByTestId('htsTrackEntry-volvox-long-reads-sv-cram', {}, delay),
+ await findByTestId(hts('volvox-long-reads-sv-cram'), {}, delay),
)
const { findByTestId: findByTestId1 } = within(
@@ -107,17 +90,9 @@ test('test snpcoverage doesnt count snpcoverage', async () => {
)
expectCanvasMatch(
- await findByTestId1(
- 'prerendered_canvas_{volvox}ctgA:2,657..2,688-0_done',
- {},
- delay,
- ),
+ await findByTestId1(pc('{volvox}ctgA:2,657..2,688-0'), {}, delay),
)
expectCanvasMatch(
- await findByTestId1(
- 'prerendered_canvas_{volvox}ctgA:2,689..2,720-0_done',
- {},
- delay,
- ),
+ await findByTestId1(pc('{volvox}ctgA:2,689..2,720-0'), {}, delay),
)
}, 30000)
diff --git a/products/jbrowse-web/src/tests/AlignmentsFeatures.test.js b/products/jbrowse-web/src/tests/AlignmentsFeatures.test.tsx
similarity index 64%
rename from products/jbrowse-web/src/tests/AlignmentsFeatures.test.js
rename to products/jbrowse-web/src/tests/AlignmentsFeatures.test.tsx
index fc690a0e79..d8e4940d67 100644
--- a/products/jbrowse-web/src/tests/AlignmentsFeatures.test.js
+++ b/products/jbrowse-web/src/tests/AlignmentsFeatures.test.tsx
@@ -1,6 +1,4 @@
-import React from 'react'
-import { fireEvent, render, within } from '@testing-library/react'
-import { act } from 'react-dom/test-utils'
+import { fireEvent, within } from '@testing-library/react'
import { LocalFile } from 'generic-filehandle'
// locals
@@ -8,11 +6,12 @@ import { clearCache } from '@jbrowse/core/util/io/RemoteFileWithRangeCache'
import { clearAdapterCache } from '@jbrowse/core/data_adapters/dataAdapterCache'
import { toMatchImageSnapshot } from 'jest-image-snapshot'
import {
- JBrowse,
setup,
expectCanvasMatch,
generateReadBuffer,
- getPluginManager,
+ createView,
+ pc,
+ hts,
} from './util'
expect.extend({ toMatchImageSnapshot })
@@ -21,7 +20,9 @@ setup()
beforeEach(() => {
clearCache()
clearAdapterCache()
+ // @ts-ignore
fetch.resetMocks()
+ // @ts-ignore
fetch.mockResponse(
generateReadBuffer(
url => new LocalFile(require.resolve(`../../test_data/volvox/${url}`)),
@@ -33,22 +34,20 @@ const delay = { timeout: 20000 }
test('opens the track menu and enables soft clipping', async () => {
console.error = jest.fn()
- const pm = getPluginManager()
- const { session } = pm.rootModel
- const { findByTestId, findByText } = render()
+ const { view, findByTestId, findByText } = createView()
await findByText('Help')
- act(() => session.views[0].setNewView(0.02, 142956))
+ view.setNewView(0.02, 142956)
// load track
fireEvent.click(
- await findByTestId('htsTrackEntry-volvox-long-reads-sv-bam', {}, delay),
+ await findByTestId(hts('volvox-long-reads-sv-bam'), {}, delay),
)
await findByTestId(
'display-volvox-long-reads-sv-bam-LinearAlignmentsDisplay',
{},
delay,
)
- expect(session.views[0].tracks[0]).toBeTruthy()
+ expect(view.tracks[0]).toBeTruthy()
// opens the track menu
fireEvent.click(await findByTestId('track_menu_icon'))
@@ -61,7 +60,7 @@ test('opens the track menu and enables soft clipping', async () => {
expectCanvasMatch(
await findByTestId1(
- 'prerendered_canvas_softclipped_{volvox}ctgA:2,849..2,864-0_done',
+ pc('softclipped_{volvox}ctgA:2,849..2,864-0'),
{},
delay,
),
@@ -70,24 +69,18 @@ test('opens the track menu and enables soft clipping', async () => {
test('selects a sort, sort by strand', async () => {
console.error = jest.fn()
- const pm = getPluginManager()
- const { session } = pm.rootModel
- const { findByTestId, findByText, findAllByTestId } = render(
- ,
- )
+ const { view, findByTestId, findByText, findAllByTestId } = createView()
await findByText('Help')
- act(() => session.views[0].setNewView(0.02, 2086500))
+ view.setNewView(0.02, 2086500)
// load track
- fireEvent.click(
- await findByTestId('htsTrackEntry-volvox-long-reads-cram', {}, delay),
- )
+ fireEvent.click(await findByTestId(hts('volvox-long-reads-cram'), {}, delay))
await findByTestId(
'display-volvox-long-reads-cram-LinearAlignmentsDisplay',
{},
delay,
)
- expect(session.views[0].tracks[0]).toBeTruthy()
+ expect(view.tracks[0]).toBeTruthy()
fireEvent.click(await findByTestId('track_menu_icon'))
fireEvent.click(await findByText('Sort by'))
@@ -101,28 +94,18 @@ test('selects a sort, sort by strand', async () => {
)
expectCanvasMatch(
- await findByTestId1(
- 'prerendered_canvas_{volvox}ctgA:41,729..41,744-0_done',
- {},
- delay,
- ),
+ await findByTestId1(pc('{volvox}ctgA:41,729..41,744-0'), {}, delay),
)
}, 35000)
test('color by strand', async () => {
console.error = jest.fn()
- const pm = getPluginManager()
- const { session } = pm.rootModel
- const { findByTestId, findByText, findAllByTestId } = render(
- ,
- )
+ const { view, findByTestId, findByText, findAllByTestId } = createView()
await findByText('Help')
- act(() => session.views[0].setNewView(0.02, 2086500))
+ view.setNewView(0.02, 2086500)
// load track
- fireEvent.click(
- await findByTestId('htsTrackEntry-volvox-long-reads-cram', {}, delay),
- )
+ fireEvent.click(await findByTestId(hts('volvox-long-reads-cram'), {}, delay))
await findByTestId(
'display-volvox-long-reads-cram-LinearAlignmentsDisplay',
{},
@@ -141,28 +124,20 @@ test('color by strand', async () => {
await findByTestId('Blockset-pileup'),
)
expectCanvasMatch(
- await findByTestId1(
- 'prerendered_canvas_{volvox}ctgA:41,729..41,744-0_done',
- {},
- delay,
- ),
+ await findByTestId1(pc('{volvox}ctgA:41,729..41,744-0'), {}, delay),
)
}, 30000)
test('color by tag', async () => {
console.error = jest.fn()
- const pm = getPluginManager()
- const { session } = pm.rootModel
- const { findByTestId, findByText, findAllByTestId } = render(
- ,
- )
+ const { view, findByTestId, findByText, findAllByTestId } = createView()
await findByText('Help')
- act(() => session.views[0].setNewView(0.465, 85055))
+ view.setNewView(0.465, 85055)
// load track
fireEvent.click(await findByTestId('htsTrackEntry-volvox_cram', {}, delay))
await findByTestId('display-volvox_cram-LinearAlignmentsDisplay', {}, delay)
- expect(session.views[0].tracks[0]).toBeTruthy()
+ expect(view.tracks[0]).toBeTruthy()
// colors by HP tag
fireEvent.click(await findByTestId('track_menu_icon'))
@@ -181,10 +156,6 @@ test('color by tag', async () => {
)
expectCanvasMatch(
- await findByTestId1(
- 'prerendered_canvas_{volvox}ctgA:39,805..40,176-0_done',
- {},
- delay,
- ),
+ await findByTestId1(pc('{volvox}ctgA:39,805..40,176-0'), {}, delay),
)
}, 30000)
diff --git a/products/jbrowse-web/src/tests/BasicLinearGenomeView.test.js b/products/jbrowse-web/src/tests/BasicLinearGenomeView.test.tsx
similarity index 54%
rename from products/jbrowse-web/src/tests/BasicLinearGenomeView.test.js
rename to products/jbrowse-web/src/tests/BasicLinearGenomeView.test.tsx
index 2da81bc015..d106ccf77d 100644
--- a/products/jbrowse-web/src/tests/BasicLinearGenomeView.test.js
+++ b/products/jbrowse-web/src/tests/BasicLinearGenomeView.test.tsx
@@ -1,23 +1,16 @@
-import React from 'react'
-import {
- createEvent,
- fireEvent,
- render,
- waitFor,
- screen,
-} from '@testing-library/react'
+import { createEvent, fireEvent, waitFor, screen } from '@testing-library/react'
import { LocalFile } from 'generic-filehandle'
import { clearCache } from '@jbrowse/core/util/io/RemoteFileWithRangeCache'
import { clearAdapterCache } from '@jbrowse/core/data_adapters/dataAdapterCache'
-
-import { JBrowse, setup, generateReadBuffer, getPluginManager } from './util'
-
+import { setup, createView, generateReadBuffer, hts } from './util'
setup()
beforeEach(() => {
clearCache()
clearAdapterCache()
+ // @ts-ignore
fetch.resetMocks()
+ // @ts-ignore
fetch.mockResponse(
generateReadBuffer(url => {
return new LocalFile(require.resolve(`../../test_data/volvox/${url}`))
@@ -31,8 +24,7 @@ const total = 30000
test(
'access about menu',
async () => {
- const pm = getPluginManager()
- const { findByText } = render()
+ const { findByText } = createView()
fireEvent.click(await findByText('Help'))
fireEvent.click(await findByText('About'))
@@ -45,33 +37,13 @@ test(
test(
'click and drag to move sideways',
async () => {
- const pm = getPluginManager()
- const state = pm.rootModel
- const { findByTestId, findAllByTestId } = render(
- ,
- )
- fireEvent.click(
- await findByTestId('htsTrackEntry-volvox_alignments', {}, delay),
- )
-
- const start = state.session.views[0].offsetPx
- const track = await findByTestId(
- 'display-volvox_alignments_alignments',
- {},
- delay,
- )
+ const { view, findByTestId } = createView()
+ const start = view.offsetPx
+ const track = await findByTestId('trackContainer', {}, delay)
fireEvent.mouseDown(track, { clientX: 250, clientY: 20 })
fireEvent.mouseMove(track, { clientX: 100, clientY: 20 })
fireEvent.mouseUp(track, { clientX: 100, clientY: 20 })
- // wait for requestAnimationFrame
- await waitFor(
- () => expect(state.session.views[0].offsetPx - start).toEqual(150),
- delay,
- )
-
- // wait for this unrelated thing because otherwise it warns about prerendered
- // canvas still running after jest is torn down
- await findAllByTestId(/prerendered_canvas/, {}, delay)
+ await waitFor(() => expect(view.offsetPx - start).toEqual(150), delay)
},
total,
)
@@ -79,17 +51,14 @@ test(
test(
'click and drag to rubberband',
async () => {
- const pm = getPluginManager()
- const state = pm.rootModel
- const { findByTestId, findByText } = render()
+ const { view, findByTestId, findByText } = createView()
const track = await findByTestId('rubberBand_controls', {}, delay)
-
- expect(state.session.views[0].bpPerPx).toEqual(0.05)
+ expect(view.bpPerPx).toEqual(0.05)
fireEvent.mouseDown(track, { clientX: 100, clientY: 0 })
fireEvent.mouseMove(track, { clientX: 250, clientY: 0 })
fireEvent.mouseUp(track, { clientX: 250, clientY: 0 })
fireEvent.click(await findByText('Zoom to region'))
- expect(state.session.views[0].bpPerPx).toEqual(0.02)
+ expect(view.bpPerPx).toEqual(0.02)
},
total,
)
@@ -97,22 +66,15 @@ test(
test(
'click and drag rubberBand, click get sequence to open sequenceDialog',
async () => {
- const pm = getPluginManager()
- const state = pm.rootModel
- const { findByTestId, findByText } = render()
- const rubberBandComponent = await findByTestId(
- 'rubberBand_controls',
- {},
- delay,
- )
-
- expect(state.session.views[0].bpPerPx).toEqual(0.05)
- fireEvent.mouseDown(rubberBandComponent, { clientX: 100, clientY: 0 })
- fireEvent.mouseMove(rubberBandComponent, { clientX: 250, clientY: 0 })
- fireEvent.mouseUp(rubberBandComponent, { clientX: 250, clientY: 0 })
+ const { view, findByTestId, findByText } = createView()
+ const rubberband = await findByTestId('rubberBand_controls', {}, delay)
+ expect(view.bpPerPx).toEqual(0.05)
+ fireEvent.mouseDown(rubberband, { clientX: 100, clientY: 0 })
+ fireEvent.mouseMove(rubberband, { clientX: 250, clientY: 0 })
+ fireEvent.mouseUp(rubberband, { clientX: 250, clientY: 0 })
fireEvent.click(await findByText('Get sequence'))
- expect(state.session.views[0].leftOffset).toBeTruthy()
- expect(state.session.views[0].rightOffset).toBeTruthy()
+ expect(view.leftOffset).toBeTruthy()
+ expect(view.rightOffset).toBeTruthy()
},
total,
)
@@ -120,17 +82,10 @@ test(
test(
'click and drag to reorder tracks',
async () => {
- const pm = getPluginManager()
- const state = pm.rootModel
- const { findByTestId } = render()
- fireEvent.click(
- await findByTestId('htsTrackEntry-volvox_alignments', {}, delay),
- )
- fireEvent.click(
- await findByTestId('htsTrackEntry-volvox_filtered_vcf', {}, delay),
- )
+ const { view, findByTestId } = createView()
+ fireEvent.click(await findByTestId(hts('volvox_alignments'), {}, delay))
+ fireEvent.click(await findByTestId(hts('volvox_filtered_vcf'), {}, delay))
- const view = state.session.views[0]
const trackId1 = view.tracks[1].id
const dragHandle0 = await findByTestId(
'dragHandle-integration_test-volvox_alignments',
@@ -161,13 +116,8 @@ test(
test(
'click and zoom in and back out',
async () => {
- const pm = getPluginManager()
- const { session } = pm.rootModel
- const { findByTestId, findAllByText } = render(
- ,
- )
+ const { view, findByTestId, findAllByText } = createView()
await findAllByText('ctgA', {}, delay)
- const view = session.views[0]
const before = view.bpPerPx
fireEvent.click(await findByTestId('zoom_in'))
await waitFor(() => expect(view.bpPerPx).toBe(before / 2), delay)
@@ -180,16 +130,11 @@ test(
test(
'opens track selector',
async () => {
- const pm = getPluginManager()
- const state = pm.rootModel
- const { findByTestId } = render()
-
- await findByTestId('htsTrackEntry-volvox_alignments', {}, delay)
- expect(state.session.views[0].tracks.length).toBe(0)
- fireEvent.click(
- await findByTestId('htsTrackEntry-volvox_alignments', {}, delay),
- )
- expect(state.session.views[0].tracks.length).toBe(1)
+ const { view, findByTestId } = createView()
+ await findByTestId(hts('volvox_alignments'), {}, delay)
+ expect(view.tracks.length).toBe(0)
+ fireEvent.click(await findByTestId(hts('volvox_alignments'), {}, delay))
+ expect(view.tracks.length).toBe(1)
},
total,
)
@@ -197,15 +142,9 @@ test(
test(
'opens reference sequence track and expects zoom in message',
async () => {
- const pm = getPluginManager()
- const state = pm.rootModel
- const { findAllByText, findByTestId } = render(
- ,
- )
- fireEvent.click(
- await findByTestId('htsTrackEntry-volvox_refseq', {}, delay),
- )
- state.session.views[0].setNewView(20, 0)
+ const { view, findByTestId, findAllByText } = createView()
+ fireEvent.click(await findByTestId(hts('volvox_refseq'), {}, delay))
+ view.setNewView(20, 0)
await findByTestId(
'display-volvox_refseq-LinearReferenceSequenceDisplay',
{},
@@ -219,23 +158,16 @@ test(
test(
'click to display center line with correct value',
async () => {
- const pm = getPluginManager()
- const state = pm.rootModel
- const { findByTestId, findByText } = render()
-
- fireEvent.click(
- await findByTestId('htsTrackEntry-volvox_alignments', {}, delay),
- )
+ const { view, findByTestId, findByText } = createView()
+ fireEvent.click(await findByTestId(hts('volvox_alignments'), {}, delay))
await findByTestId('display-volvox_alignments_alignments', {}, delay)
// opens the view menu and selects show center line
fireEvent.click(await findByTestId('view_menu_icon'))
fireEvent.click(await findByText('Show center line'))
- expect(state.session.views[0].showCenterLine).toBe(true)
-
- const { centerLineInfo } = state.session.views[0]
- expect(centerLineInfo.refName).toBe('ctgA')
- expect(centerLineInfo.offset).toEqual(120)
+ expect(view.showCenterLine).toBe(true)
+ expect(view.centerLineInfo?.refName).toBe('ctgA')
+ expect(view.centerLineInfo?.offset).toEqual(120)
},
total,
)
@@ -243,21 +175,18 @@ test(
test(
'test choose option from dropdown refName autocomplete',
async () => {
- const pm = getPluginManager()
- const state = pm.rootModel
const {
+ view,
findByText,
findByTestId,
getByPlaceholderText,
findByPlaceholderText,
- } = render()
- const view = state.session.views[0]
+ } = createView()
+
expect(view.displayedRegions[0].refName).toEqual('ctgA')
fireEvent.click(await findByText('Help'))
// need this to complete before we can try to search
- fireEvent.click(
- await findByTestId('htsTrackEntry-volvox_alignments', {}, delay),
- )
+ fireEvent.click(await findByTestId(hts('volvox_alignments'), {}, delay))
await findByTestId(
'trackRenderingContainer-integration_test-volvox_alignments',
{},
@@ -283,9 +212,8 @@ test(
)
await waitFor(() => {
- expect(getByPlaceholderText('Search for location').value).toEqual(
- expect.stringContaining('ctgB'),
- )
+ const n = getByPlaceholderText('Search for location') as HTMLInputElement
+ expect(n.value).toEqual(expect.stringContaining('ctgB'))
}, delay)
},
total,
diff --git a/products/jbrowse-web/src/tests/BigWig.test.js b/products/jbrowse-web/src/tests/BigWig.test.js
deleted file mode 100644
index 96994b5011..0000000000
--- a/products/jbrowse-web/src/tests/BigWig.test.js
+++ /dev/null
@@ -1,82 +0,0 @@
-import React from 'react'
-import { fireEvent, render } from '@testing-library/react'
-import { LocalFile } from 'generic-filehandle'
-import { clearCache } from '@jbrowse/core/util/io/RemoteFileWithRangeCache'
-import { clearAdapterCache } from '@jbrowse/core/data_adapters/dataAdapterCache'
-import { toMatchImageSnapshot } from 'jest-image-snapshot'
-
-import {
- JBrowse,
- setup,
- generateReadBuffer,
- expectCanvasMatch,
- getPluginManager,
-} from './util'
-
-expect.extend({ toMatchImageSnapshot })
-setup()
-
-beforeEach(() => {
- clearCache()
- clearAdapterCache()
- fetch.resetMocks()
- fetch.mockResponse(
- generateReadBuffer(
- url => new LocalFile(require.resolve(`../../test_data/volvox/${url}`)),
- ),
- )
-})
-
-const delay = { timeout: 10000 }
-
-test('open a bigwig track', async () => {
- const pm = getPluginManager()
- const state = pm.rootModel
- const { findByTestId, findByText } = render()
- await findByText('Help')
- state.session.views[0].setNewView(5, 0)
- fireEvent.click(
- await findByTestId('htsTrackEntry-volvox_microarray', {}, delay),
- )
- expectCanvasMatch(
- await findByTestId(
- 'prerendered_canvas_{volvox}ctgA:1..4,000-0_done',
- {},
- delay,
- ),
- )
-}, 15000)
-test('open a bigwig line track 2', async () => {
- const pm = getPluginManager()
- const state = pm.rootModel
- const { findByTestId, findByText } = render()
- await findByText('Help')
- state.session.views[0].setNewView(10, 0)
- fireEvent.click(
- await findByTestId('htsTrackEntry-volvox_microarray_line', {}, delay),
- )
- expectCanvasMatch(
- await findByTestId(
- 'prerendered_canvas_{volvox}ctgA:1..8,000-0_done',
- {},
- delay,
- ),
- )
-}, 15000)
-test('open a bigwig density track', async () => {
- const pm = getPluginManager()
- const state = pm.rootModel
- const { findByTestId, findByText } = render()
- await findByText('Help')
- state.session.views[0].setNewView(5, 0)
- fireEvent.click(
- await findByTestId('htsTrackEntry-volvox_microarray_density', {}, delay),
- )
- expectCanvasMatch(
- await findByTestId(
- 'prerendered_canvas_{volvox}ctgA:1..4,000-0_done',
- {},
- delay,
- ),
- )
-}, 15000)
diff --git a/products/jbrowse-web/src/tests/BigWig.test.tsx b/products/jbrowse-web/src/tests/BigWig.test.tsx
new file mode 100644
index 0000000000..1bad41c1d4
--- /dev/null
+++ b/products/jbrowse-web/src/tests/BigWig.test.tsx
@@ -0,0 +1,64 @@
+import { fireEvent } from '@testing-library/react'
+import { LocalFile } from 'generic-filehandle'
+import { clearCache } from '@jbrowse/core/util/io/RemoteFileWithRangeCache'
+import { clearAdapterCache } from '@jbrowse/core/data_adapters/dataAdapterCache'
+import { toMatchImageSnapshot } from 'jest-image-snapshot'
+
+import {
+ setup,
+ generateReadBuffer,
+ expectCanvasMatch,
+ createView,
+ pc,
+ hts,
+} from './util'
+
+expect.extend({ toMatchImageSnapshot })
+setup()
+
+beforeEach(() => {
+ clearCache()
+ clearAdapterCache()
+ // @ts-ignore
+ fetch.resetMocks()
+ // @ts-ignore
+ fetch.mockResponse(
+ generateReadBuffer(
+ url => new LocalFile(require.resolve(`../../test_data/volvox/${url}`)),
+ ),
+ )
+})
+
+const delay = { timeout: 10000 }
+
+test('open a bigwig track', async () => {
+ const { view, findByTestId, findByText } = createView()
+ await findByText('Help')
+ view.setNewView(5, 0)
+ fireEvent.click(await findByTestId(hts('volvox_microarray'), {}, delay))
+ expectCanvasMatch(
+ await findByTestId(pc('{volvox}ctgA:1..4,000-0'), {}, delay),
+ )
+}, 15000)
+test('open a bigwig line track 2', async () => {
+ const { view, findByTestId, findByText } = createView()
+
+ await findByText('Help')
+ view.setNewView(10, 0)
+ fireEvent.click(await findByTestId(hts('volvox_microarray_line'), {}, delay))
+ expectCanvasMatch(
+ await findByTestId(pc('{volvox}ctgA:1..8,000-0'), {}, delay),
+ )
+}, 15000)
+test('open a bigwig density track', async () => {
+ const { view, findByTestId, findByText } = createView()
+
+ await findByText('Help')
+ view.setNewView(5, 0)
+ fireEvent.click(
+ await findByTestId(hts('volvox_microarray_density'), {}, delay),
+ )
+ expectCanvasMatch(
+ await findByTestId(pc('{volvox}ctgA:1..4,000-0'), {}, delay),
+ )
+}, 15000)
diff --git a/products/jbrowse-web/src/tests/Dotplot.test.js b/products/jbrowse-web/src/tests/Dotplot.test.tsx
similarity index 78%
rename from products/jbrowse-web/src/tests/Dotplot.test.js
rename to products/jbrowse-web/src/tests/Dotplot.test.tsx
index def8323e74..468923b2d8 100644
--- a/products/jbrowse-web/src/tests/Dotplot.test.js
+++ b/products/jbrowse-web/src/tests/Dotplot.test.tsx
@@ -1,5 +1,4 @@
-import React from 'react'
-import { render, fireEvent } from '@testing-library/react'
+import { fireEvent } from '@testing-library/react'
import { LocalFile } from 'generic-filehandle'
import { clearCache } from '@jbrowse/core/util/io/RemoteFileWithRangeCache'
import { clearAdapterCache } from '@jbrowse/core/data_adapters/dataAdapterCache'
@@ -8,11 +7,10 @@ import { TextEncoder, TextDecoder } from 'web-encoding'
import dotplotConfig from '../../test_data/config_dotplot.json'
import {
- JBrowse,
setup,
generateReadBuffer,
expectCanvasMatch,
- getPluginManager,
+ createView,
} from './util'
if (!window.TextEncoder) {
@@ -21,9 +19,12 @@ if (!window.TextEncoder) {
if (!window.TextDecoder) {
window.TextDecoder = TextDecoder
}
-dotplotConfig.configuration = {
- rpc: {
- defaultDriver: 'MainThreadRpcDriver',
+const config = {
+ ...dotplotConfig,
+ configuration: {
+ rpc: {
+ defaultDriver: 'MainThreadRpcDriver',
+ },
},
}
@@ -35,7 +36,9 @@ setup()
beforeEach(() => {
clearCache()
clearAdapterCache()
+ // @ts-ignore
fetch.resetMocks()
+ // @ts-ignore
fetch.mockResponse(
generateReadBuffer(
url => new LocalFile(require.resolve(`../../test_data/${url}`)),
@@ -44,16 +47,12 @@ beforeEach(() => {
})
test('open a dotplot view', async () => {
- const pm = getPluginManager(dotplotConfig, false)
- const { findByTestId } = render()
+ const { findByTestId } = createView(config)
expectCanvasMatch(await findByTestId('prerendered_canvas_done', {}, delay))
}, 20000)
test('open a dotplot view with import form', async () => {
- const pm = getPluginManager(dotplotConfig, false)
- const { findByTestId, findAllByTestId, findByText } = render(
- ,
- )
+ const { findByTestId, findAllByTestId, findByText } = createView(config)
fireEvent.click(await findByTestId('close_view'))
fireEvent.click(await findByText('File'))
diff --git a/products/jbrowse-web/src/tests/DrawerWidget.test.js b/products/jbrowse-web/src/tests/DrawerWidget.test.tsx
similarity index 71%
rename from products/jbrowse-web/src/tests/DrawerWidget.test.js
rename to products/jbrowse-web/src/tests/DrawerWidget.test.tsx
index b3965c423e..a78e16319d 100644
--- a/products/jbrowse-web/src/tests/DrawerWidget.test.js
+++ b/products/jbrowse-web/src/tests/DrawerWidget.test.tsx
@@ -1,19 +1,19 @@
-import React from 'react'
import '@testing-library/jest-dom/extend-expect'
-import { act } from 'react-dom/test-utils'
import { LocalFile } from 'generic-filehandle'
import { clearCache } from '@jbrowse/core/util/io/RemoteFileWithRangeCache'
import { clearAdapterCache } from '@jbrowse/core/data_adapters/dataAdapterCache'
-import { fireEvent, render, getByRole } from '@testing-library/react'
-import { JBrowse, getPluginManager, generateReadBuffer } from './util'
+import { fireEvent, getByRole } from '@testing-library/react'
+import { createView, generateReadBuffer, hts } from './util'
const delay = { timeout: 15000 }
beforeEach(() => {
clearCache()
clearAdapterCache()
+ // @ts-ignore
fetch.resetMocks()
+ // @ts-ignore
fetch.mockResponse(
generateReadBuffer(
url => new LocalFile(require.resolve(`../../test_data/volvox/${url}`)),
@@ -22,20 +22,11 @@ beforeEach(() => {
})
test('variant track test - opens feature detail view', async () => {
- const pm = getPluginManager()
- const state = pm.rootModel
- const { findByTestId, findAllByTestId, findByText } = render(
- ,
- )
+ const { view, findByTestId, findAllByTestId, findByText } = createView()
await findByText('Help')
- const view = state.session.views[0]
- act(() => view.setNewView(0.05, 5000))
- fireEvent.click(
- await findByTestId('htsTrackEntry-volvox_filtered_vcf', {}, delay),
- )
- act(() =>
- view.tracks[0].displays[0].setFeatureIdUnderMouse('test-vcf-604452'),
- )
+ view.setNewView(0.05, 5000)
+ fireEvent.click(await findByTestId(hts('volvox_filtered_vcf'), {}, delay))
+ view.tracks[0].displays[0].setFeatureIdUnderMouse('test-vcf-604452')
const feats1 = await findAllByTestId('test-vcf-604452', {}, delay)
fireEvent.click(feats1[0])
@@ -48,15 +39,11 @@ test('variant track test - opens feature detail view', async () => {
}, 20000)
test('widget drawer navigation', async () => {
- const pm = getPluginManager(undefined, true)
- const state = pm.rootModel
- const { findByTestId, findByText } = render()
+ const { view, state, findByTestId, findByText } = createView()
await findByText('Help')
- act(() => state.session.views[0].setNewView(0.05, 5000))
+ view.setNewView(0.05, 5000)
// opens a config editor widget
- fireEvent.click(
- await findByTestId('htsTrackEntry-volvox_filtered_vcf', {}, delay),
- )
+ fireEvent.click(await findByTestId(hts('volvox_filtered_vcf'), {}, delay))
fireEvent.click(
await findByTestId('htsTrackEntryMenu-volvox_filtered_vcf', {}, delay),
)
@@ -74,20 +61,25 @@ test('widget drawer navigation', async () => {
await findByTestId('hierarchical_track_selector')
// test minimize and maximize widget drawer
+ // @ts-ignore
expect(state.session.minimized).toBeFalsy()
await findByTestId('drawer-minimize')
fireEvent.click(await findByTestId('drawer-minimize'))
+ // @ts-ignore
expect(state.session.minimized).toBeTruthy()
fireEvent.click(await findByTestId('drawer-maximize'))
+ // @ts-ignore
expect(state.session.minimized).toBeFalsy()
// test deleting widget from select dropdown using trash icon
+ // @ts-ignore
expect(state.session.activeWidgets.size).toEqual(2)
fireEvent.mouseDown(
getByRole(await findByTestId('widget-drawer-selects'), 'button'),
)
fireEvent.click(await findByTestId('ConfigurationEditorWidget-drawer-delete'))
+ // @ts-ignore
expect(state.session.activeWidgets.size).toEqual(1)
}, 20000)
diff --git a/products/jbrowse-web/src/tests/Hic.test.js b/products/jbrowse-web/src/tests/Hic.test.js
deleted file mode 100644
index 0774cff4c1..0000000000
--- a/products/jbrowse-web/src/tests/Hic.test.js
+++ /dev/null
@@ -1,49 +0,0 @@
-import React from 'react'
-import { fireEvent, render } from '@testing-library/react'
-import { LocalFile } from 'generic-filehandle'
-import { toMatchImageSnapshot } from 'jest-image-snapshot'
-
-import {
- JBrowse,
- setup,
- expectCanvasMatch,
- generateReadBuffer,
- getPluginManager,
-} from './util'
-import hicConfig from '../../../../extra_test_data/hic_integration_test.json'
-
-expect.extend({ toMatchImageSnapshot })
-setup()
-
-hicConfig.configuration = {
- rpc: {
- defaultDriver: 'MainThreadRpcDriver',
- },
-}
-
-const delay = { timeout: 20000 }
-
-test('hic', async () => {
- fetch.resetMocks()
- fetch.mockResponse(
- generateReadBuffer(
- url =>
- new LocalFile(require.resolve(`../../../../extra_test_data/${url}`)),
- ),
- )
- const pluginManager = getPluginManager(hicConfig)
-
- const state = pluginManager.rootModel
- const { findByTestId } = render()
- state.session.views[0].setNewView(5000, 0)
- fireEvent.click(
- await findByTestId('htsTrackEntry-hic_test', {}, { timeout: 10000 }),
- )
- expectCanvasMatch(
- await findByTestId(
- 'prerendered_canvas_{hg19}1:1..4,000,000-0_done',
- {},
- delay,
- ),
- )
-}, 25000)
diff --git a/products/jbrowse-web/src/tests/Hic.test.tsx b/products/jbrowse-web/src/tests/Hic.test.tsx
new file mode 100644
index 0000000000..64bb04d900
--- /dev/null
+++ b/products/jbrowse-web/src/tests/Hic.test.tsx
@@ -0,0 +1,42 @@
+import { fireEvent } from '@testing-library/react'
+import { LocalFile } from 'generic-filehandle'
+import { toMatchImageSnapshot } from 'jest-image-snapshot'
+
+import {
+ setup,
+ expectCanvasMatch,
+ generateReadBuffer,
+ createView,
+ pc,
+ hts,
+} from './util'
+import hicConfig from '../../../../extra_test_data/hic_integration_test.json'
+
+expect.extend({ toMatchImageSnapshot })
+setup()
+
+const delay = { timeout: 20000 }
+
+test('hic', async () => {
+ // @ts-ignore
+ fetch.resetMocks()
+ // @ts-ignore
+ fetch.mockResponse(
+ generateReadBuffer(
+ url =>
+ new LocalFile(require.resolve(`../../../../extra_test_data/${url}`)),
+ ),
+ )
+
+ const { view, findByTestId } = createView({
+ ...hicConfig,
+ configuration: {
+ rpc: {
+ defaultDriver: 'MainThreadRpcDriver',
+ },
+ },
+ })
+ view.setNewView(5000, 0)
+ fireEvent.click(await findByTestId(hts('hic_test'), {}, delay))
+ expectCanvasMatch(await findByTestId(pc('{hg19}1:1..4,000,000-0'), {}, delay))
+}, 25000)
diff --git a/products/jbrowse-web/src/tests/JBrowse.test.js b/products/jbrowse-web/src/tests/JBrowse.test.tsx
similarity index 62%
rename from products/jbrowse-web/src/tests/JBrowse.test.js
rename to products/jbrowse-web/src/tests/JBrowse.test.tsx
index a9200bcd4e..6278fe3913 100644
--- a/products/jbrowse-web/src/tests/JBrowse.test.js
+++ b/products/jbrowse-web/src/tests/JBrowse.test.tsx
@@ -1,7 +1,6 @@
-import React from 'react'
import '@testing-library/jest-dom/extend-expect'
-import { fireEvent, render } from '@testing-library/react'
+import { fireEvent } from '@testing-library/react'
import { LocalFile } from 'generic-filehandle'
import { TextEncoder } from 'web-encoding'
import { clearCache } from '@jbrowse/core/util/io/RemoteFileWithRangeCache'
@@ -13,8 +12,9 @@ import JBrowseRootModelFactory from '../rootModel'
import corePlugins from '../corePlugins'
import * as sessionSharing from '../sessionSharing'
import volvoxConfigSnapshot from '../../test_data/volvox/config.json'
-import { JBrowse, setup, getPluginManager, generateReadBuffer } from './util'
+import { setup, generateReadBuffer, createView, hts } from './util'
import TestPlugin from './TestPlugin'
+
jest.mock('../makeWorkerInstance', () => () => {})
window.TextEncoder = TextEncoder
@@ -25,7 +25,9 @@ const delay = { timeout: 15000 }
beforeEach(() => {
clearCache()
clearAdapterCache()
+ // @ts-ignore
fetch.resetMocks()
+ // @ts-ignore
fetch.mockResponse(
generateReadBuffer(
url => new LocalFile(require.resolve(`../../test_data/volvox/${url}`)),
@@ -33,26 +35,20 @@ beforeEach(() => {
)
})
-describe('', () => {
- it('renders with an empty config', async () => {
- const pm = getPluginManager({})
- const { findByText } = render()
- await findByText('Help')
- })
- it('renders with an initialState', async () => {
- const pm = getPluginManager()
- const { findByText } = render()
- await findByText('Help')
- })
+test('renders with an empty config', async () => {
+ const { findByText } = createView()
+ await findByText('Help')
+})
+test('renders with an initialState', async () => {
+ const { findByText } = createView()
+ await findByText('Help')
})
test('lollipop track test', async () => {
- const pm = getPluginManager()
- const state = pm.rootModel
- const { findByTestId, findByText } = render()
+ const { view, findByTestId, findByText } = createView()
await findByText('Help')
- state.session.views[0].setNewView(1, 150)
- fireEvent.click(await findByTestId('htsTrackEntry-lollipop_track', {}, delay))
+ view.setNewView(1, 150)
+ fireEvent.click(await findByTestId(hts('lollipop_track'), {}, delay))
await findByTestId('display-lollipop_track_linear', {}, delay)
await findByTestId('three', {}, delay)
@@ -70,7 +66,9 @@ test('toplevel configuration', () => {
pm.setRootModel(rootModel)
pm.configure()
const state = pm.rootModel
- const { jbrowse } = state
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
+ const { jbrowse } = state!
+ // @ts-ignore
const { configuration } = jbrowse
// test reading top level configurations added by Test Plugin
const test = getConf(jbrowse, ['TestPlugin', 'topLevelTest'])
@@ -80,30 +78,20 @@ test('toplevel configuration', () => {
})
test('assembly aliases', async () => {
- const pm = getPluginManager()
- const state = pm.rootModel
- const { findByTestId, findByText } = render()
+ const { view, findByTestId, findByText } = createView()
await findByText('Help')
- state.session.views[0].setNewView(0.05, 5000)
+ view.setNewView(0.05, 5000)
fireEvent.click(
- await findByTestId(
- 'htsTrackEntry-volvox_filtered_vcf_assembly_alias',
- {},
- delay,
- ),
+ await findByTestId(hts('volvox_filtered_vcf_assembly_alias'), {}, delay),
)
await findByTestId('box-test-vcf-604452', {}, delay)
}, 15000)
test('nclist track test with long name', async () => {
- const pm = getPluginManager()
- const state = pm.rootModel
- const { findByTestId, findByText } = render()
+ const { view, findByTestId, findByText } = createView()
await findByText('Help')
- state.session.views[0].setNewView(1, -539)
- fireEvent.click(
- await findByTestId('htsTrackEntry-nclist_long_names', {}, delay),
- )
+ view.setNewView(1, -539)
+ fireEvent.click(await findByTestId(hts('nclist_long_names'), {}, delay))
await findByText(
'This is a gene with a very long name it is crazy abcdefghijklmnopqrstuvwxyz1...',
@@ -113,6 +101,7 @@ test('nclist track test with long name', async () => {
}, 15000)
test('test sharing', async () => {
+ // @ts-ignore
sessionSharing.shareSessionToDynamo = jest.fn().mockReturnValue({
encryptedSession: 'A',
json: {
@@ -120,26 +109,22 @@ test('test sharing', async () => {
},
password: '123',
})
- const pm = getPluginManager()
- const { findByTestId, findByText } = render()
+ const { findByTestId, findByText } = createView()
await findByText('Help')
fireEvent.click(await findByText('Share'))
// check the share dialog has the above session shared
await findByTestId('share-dialog')
- const url = await findByTestId('share-url-text')
+ const url = (await findByTestId('share-url-text')) as HTMLInputElement
expect(url.value).toBe('http://localhost/?session=share-abc&password=123')
})
test('looks at about this track dialog', async () => {
- const pm = getPluginManager()
- const { findByTestId, findAllByText, findByText } = render(
- ,
- )
+ const { findByTestId, findAllByText, findByText } = createView()
await findByText('Help')
// load track
- fireEvent.click(await findByTestId('htsTrackEntry-volvox-long-reads-cram'))
+ fireEvent.click(await findByTestId(hts('volvox-long-reads-cram')))
fireEvent.click(await findByTestId('track_menu_icon', {}, delay))
fireEvent.click(await findByText('About track'))
await findAllByText(/SQ/, {}, delay)
diff --git a/products/jbrowse-web/src/tests/Reload.test.js b/products/jbrowse-web/src/tests/Reload.test.tsx
similarity index 56%
rename from products/jbrowse-web/src/tests/Reload.test.js
rename to products/jbrowse-web/src/tests/Reload.test.tsx
index 59ef65310e..75d3cbf482 100644
--- a/products/jbrowse-web/src/tests/Reload.test.js
+++ b/products/jbrowse-web/src/tests/Reload.test.tsx
@@ -1,17 +1,16 @@
-import React from 'react'
-import { fireEvent, render } from '@testing-library/react'
+import { fireEvent } from '@testing-library/react'
import { toMatchImageSnapshot } from 'jest-image-snapshot'
import { LocalFile } from 'generic-filehandle'
import { clearCache } from '@jbrowse/core/util/io/RemoteFileWithRangeCache'
import { clearAdapterCache } from '@jbrowse/core/data_adapters/dataAdapterCache'
import {
- JBrowse,
setup,
- getPluginManager,
expectCanvasMatch,
generateReadBuffer,
+ hts,
+ pc,
+ createView,
} from './util'
-
expect.extend({ toMatchImageSnapshot })
const readBuffer = generateReadBuffer(
@@ -23,7 +22,9 @@ setup()
beforeEach(() => {
clearCache()
clearAdapterCache()
+ // @ts-ignore
fetch.resetMocks()
+ // @ts-ignore
fetch.mockResponse(readBuffer)
})
@@ -35,8 +36,7 @@ const delay = { timeout: 10000 }
test('reloads alignments track (CRAI 404)', async () => {
console.error = jest.fn()
- const pluginManager = getPluginManager()
- const state = pluginManager.rootModel
+ // @ts-ignore
fetch.mockResponse(async request => {
if (request.url === 'volvox-sorted-altname.cram.crai') {
return { status: 404 }
@@ -44,32 +44,24 @@ test('reloads alignments track (CRAI 404)', async () => {
return readBuffer(request)
})
- const { findByTestId, findByText, findAllByTestId, findAllByText } = render(
- ,
- )
+ const { view, findByTestId, findByText, findAllByTestId, findAllByText } =
+ createView()
await findByText('Help')
- state.session.views[0].setNewView(0.5, 0)
- fireEvent.click(
- await findByTestId('htsTrackEntry-volvox_cram_pileup', {}, delay),
- )
+ view.setNewView(0.5, 0)
+ fireEvent.click(await findByTestId(hts('volvox_cram_pileup'), {}, delay))
await findAllByText(/HTTP 404/, {}, delay)
+
+ // @ts-ignore
fetch.mockResponse(readBuffer)
const buttons = await findAllByTestId('reload_button')
fireEvent.click(buttons[0])
- expectCanvasMatch(
- await findByTestId(
- 'prerendered_canvas_{volvox}ctgA:1..400-0_done',
- {},
- delay,
- ),
- )
+ expectCanvasMatch(await findByTestId(pc('{volvox}ctgA:1..400-0'), {}, delay))
}, 20000)
test('reloads alignments track (CRAM 404)', async () => {
console.error = jest.fn()
- const pluginManager = getPluginManager()
- const state = pluginManager.rootModel
+ // @ts-ignore
fetch.mockResponse(async request => {
if (request.url === 'volvox-sorted-altname.cram') {
return { status: 404 }
@@ -79,29 +71,20 @@ test('reloads alignments track (CRAM 404)', async () => {
)(request)
})
- const { findByTestId, findByText, findAllByTestId, findAllByText } = render(
- ,
- )
+ const { view, findByTestId, findByText, findAllByTestId, findAllByText } =
+ createView()
await findByText('Help')
- state.session.views[0].setNewView(0.5, 0)
- fireEvent.click(
- await findByTestId('htsTrackEntry-volvox_cram_snpcoverage', {}, delay),
- )
+ view.setNewView(0.5, 0)
+ fireEvent.click(await findByTestId(hts('volvox_cram_snpcoverage'), {}, delay))
await findAllByText(/HTTP 404/, {}, delay)
+ // @ts-ignore
fetch.mockResponse(readBuffer)
const buttons = await findAllByTestId('reload_button')
fireEvent.click(buttons[0])
- expectCanvasMatch(
- await findByTestId(
- 'prerendered_canvas_{volvox}ctgA:1..400-0_done',
- {},
- delay,
- ),
- )
+ expectCanvasMatch(await findByTestId(pc('{volvox}ctgA:1..400-0'), {}, delay))
}, 20000)
test('reloads alignments track (BAI 404)', async () => {
- const pluginManager = getPluginManager()
- const state = pluginManager.rootModel
+ // @ts-ignore
fetch.mockResponse(async request => {
if (request.url === 'volvox-sorted-altname.bam.bai') {
return { status: 404 }
@@ -109,29 +92,20 @@ test('reloads alignments track (BAI 404)', async () => {
return readBuffer(request)
})
- const { findByTestId, findByText, findAllByTestId, findAllByText } = render(
- ,
- )
+ const { view, findByTestId, findByText, findAllByTestId, findAllByText } =
+ createView()
await findByText('Help')
- state.session.views[0].setNewView(0.5, 0)
- fireEvent.click(
- await findByTestId('htsTrackEntry-volvox_bam_snpcoverage', {}, delay),
- )
+ view.setNewView(0.5, 0)
+ fireEvent.click(await findByTestId(hts('volvox_bam_snpcoverage'), {}, delay))
await findAllByText(/HTTP 404/, {}, delay)
+ // @ts-ignore
fetch.mockResponse(readBuffer)
const buttons = await findAllByTestId('reload_button')
fireEvent.click(buttons[0])
- expectCanvasMatch(
- await findByTestId(
- 'prerendered_canvas_{volvox}ctgA:1..400-0_done',
- {},
- delay,
- ),
- )
+ expectCanvasMatch(await findByTestId(pc('{volvox}ctgA:1..400-0'), {}, delay))
}, 20000)
test('reloads alignments track (BAM 404)', async () => {
- const pluginManager = getPluginManager()
- const state = pluginManager.rootModel
+ // @ts-ignore
fetch.mockResponse(async request => {
if (request.url === 'volvox-sorted-altname.bam') {
return { status: 404 }
@@ -139,32 +113,24 @@ test('reloads alignments track (BAM 404)', async () => {
return readBuffer(request)
})
- const { findByTestId, findByText, findAllByTestId, findAllByText } = render(
- ,
- )
+ const { view, findByTestId, findByText, findAllByTestId, findAllByText } =
+ createView()
await findByText('Help')
- state.session.views[0].setNewView(0.5, 0)
- fireEvent.click(
- await findByTestId('htsTrackEntry-volvox_bam_pileup', {}, delay),
- )
+ view.setNewView(0.5, 0)
+ fireEvent.click(await findByTestId(hts('volvox_bam_pileup'), {}, delay))
await findAllByText(/HTTP 404/, {}, delay)
+
+ // @ts-ignore
fetch.mockResponse(readBuffer)
const buttons = await findAllByTestId('reload_button')
fireEvent.click(buttons[0])
- expectCanvasMatch(
- await findByTestId(
- 'prerendered_canvas_{volvox}ctgA:1..400-0_done',
- {},
- delay,
- ),
- )
+ expectCanvasMatch(await findByTestId(pc('{volvox}ctgA:1..400-0'), {}, delay))
}, 20000)
test('reloads bigwig (BW 404)', async () => {
console.error = jest.fn()
- const pluginManager = getPluginManager()
- const state = pluginManager.rootModel
+ // @ts-ignore
fetch.mockResponse(async request => {
if (request.url === 'volvox_microarray.bw') {
return { status: 404 }
@@ -172,31 +138,25 @@ test('reloads bigwig (BW 404)', async () => {
return readBuffer(request)
})
- const { findByTestId, findByText, findAllByTestId, findAllByText } = render(
- ,
- )
+ const { view, findByTestId, findByText, findAllByTestId, findAllByText } =
+ createView()
await findByText('Help')
- state.session.views[0].setNewView(10, 0)
- fireEvent.click(
- await findByTestId('htsTrackEntry-volvox_microarray', {}, delay),
- )
+ view.setNewView(10, 0)
+ fireEvent.click(await findByTestId(hts('volvox_microarray'), {}, delay))
await findAllByText(/HTTP 404/, {}, delay)
+ // @ts-ignore
fetch.mockResponse(readBuffer)
const buttons = await findAllByTestId('reload_button')
fireEvent.click(buttons[0])
expectCanvasMatch(
- await findByTestId(
- 'prerendered_canvas_{volvox}ctgA:1..8,000-0_done',
- {},
- delay,
- ),
+ await findByTestId(pc('{volvox}ctgA:1..8,000-0'), {}, delay),
)
}, 20000)
test('reloads vcf (VCF.GZ 404)', async () => {
console.error = jest.fn()
- const pluginManager = getPluginManager()
- const state = pluginManager.rootModel
+
+ // @ts-ignore
fetch.mockResponse(async request => {
if (request.url === 'volvox.filtered.vcf.gz') {
return { status: 404 }
@@ -204,15 +164,14 @@ test('reloads vcf (VCF.GZ 404)', async () => {
return readBuffer(request)
})
- const { findByTestId, findByText, findAllByTestId, findAllByText } = render(
- ,
- )
+ const { view, findByTestId, findByText, findAllByTestId, findAllByText } =
+ createView()
await findByText('Help')
- state.session.views[0].setNewView(0.05, 5000)
- fireEvent.click(
- await findByTestId('htsTrackEntry-volvox_filtered_vcf', {}, delay),
- )
+ view.setNewView(0.05, 5000)
+ fireEvent.click(await findByTestId(hts('volvox_filtered_vcf'), {}, delay))
await findAllByText(/HTTP 404/, {}, delay)
+
+ // @ts-ignore
fetch.mockResponse(readBuffer)
const buttons = await findAllByTestId('reload_button')
fireEvent.click(buttons[0])
@@ -222,8 +181,7 @@ test('reloads vcf (VCF.GZ 404)', async () => {
test('reloads vcf (VCF.GZ.TBI 404)', async () => {
console.error = jest.fn()
- const pluginManager = getPluginManager()
- const state = pluginManager.rootModel
+ // @ts-ignore
fetch.mockResponse(async request => {
if (request.url === 'volvox.filtered.vcf.gz.tbi') {
return { status: 404 }
@@ -231,15 +189,13 @@ test('reloads vcf (VCF.GZ.TBI 404)', async () => {
return readBuffer(request)
})
- const { findByTestId, findByText, findAllByTestId, findAllByText } = render(
- ,
- )
+ const { view, findByTestId, findByText, findAllByTestId, findAllByText } =
+ createView()
await findByText('Help')
- state.session.views[0].setNewView(0.05, 5000)
- fireEvent.click(
- await findByTestId('htsTrackEntry-volvox_filtered_vcf', {}, delay),
- )
+ view.setNewView(0.05, 5000)
+ fireEvent.click(await findByTestId(hts('volvox_filtered_vcf'), {}, delay))
await findAllByText(/HTTP 404/, {}, delay)
+ // @ts-ignore
fetch.mockResponse(readBuffer)
const buttons = await findAllByTestId('reload_button')
fireEvent.click(buttons[0])
diff --git a/products/jbrowse-web/src/tests/StatsEstimation.test.js b/products/jbrowse-web/src/tests/StatsEstimation.test.tsx
similarity index 55%
rename from products/jbrowse-web/src/tests/StatsEstimation.test.js
rename to products/jbrowse-web/src/tests/StatsEstimation.test.tsx
index a7bec0b6e2..5e52bc233f 100644
--- a/products/jbrowse-web/src/tests/StatsEstimation.test.js
+++ b/products/jbrowse-web/src/tests/StatsEstimation.test.tsx
@@ -1,5 +1,4 @@
-import React from 'react'
-import { fireEvent, render, waitFor } from '@testing-library/react'
+import { fireEvent, waitFor } from '@testing-library/react'
import { LocalFile } from 'generic-filehandle'
// locals
@@ -7,11 +6,12 @@ import { clearCache } from '@jbrowse/core/util/io/RemoteFileWithRangeCache'
import { clearAdapterCache } from '@jbrowse/core/data_adapters/dataAdapterCache'
import { toMatchImageSnapshot } from 'jest-image-snapshot'
import {
- JBrowse,
setup,
expectCanvasMatch,
generateReadBuffer,
- getPluginManager,
+ createView,
+ hts,
+ pc,
} from './util'
expect.extend({ toMatchImageSnapshot })
@@ -20,53 +20,41 @@ setup()
beforeEach(() => {
clearCache()
clearAdapterCache()
+ // @ts-ignore
fetch.resetMocks()
+ // @ts-ignore
fetch.mockResponse(
- generateReadBuffer(url => {
- return new LocalFile(require.resolve(`../../test_data/volvox/${url}`))
- }),
+ generateReadBuffer(
+ url => new LocalFile(require.resolve(`../../test_data/volvox/${url}`)),
+ ),
)
})
const delay = { timeout: 20000 }
test('test stats estimation pileup, zoom in to see', async () => {
- const pluginManager = getPluginManager()
- const { session } = pluginManager.rootModel
- const { findByText, findAllByText, findByTestId } = render(
- ,
- )
+ const { view, findByText, findAllByText, findByTestId } = createView()
await findByText('Help')
- session.views[0].setNewView(30, 183)
+ view.setNewView(30, 183)
- fireEvent.click(
- await findByTestId('htsTrackEntry-volvox_cram_pileup', {}, delay),
- )
+ fireEvent.click(await findByTestId(hts('volvox_cram_pileup'), {}, delay))
await findAllByText(/Requested too much data/, {}, delay)
- const before = session.views[0].bpPerPx
+ const before = view.bpPerPx
fireEvent.click(await findByTestId('zoom_in'))
// found it helps avoid flaky test to check that it is zoomed in before
// checking snapshot (even though it seems like it is unneeded) #2673
- await waitFor(() => expect(session.views[0].bpPerPx).toBe(before / 2), delay)
+ await waitFor(() => expect(view.bpPerPx).toBe(before / 2), delay)
expectCanvasMatch(
- await findByTestId(
- 'prerendered_canvas_{volvox}ctgA:1..12,000-0_done',
- {},
- delay,
- ),
+ await findByTestId(pc('{volvox}ctgA:1..12,000-0'), {}, delay),
)
}, 30000)
test('test stats estimation pileup, force load to see', async () => {
- const pluginManager = getPluginManager()
- const { session } = pluginManager.rootModel
- const { findByText, findAllByText, findByTestId } = render(
- ,
- )
+ const { view, findByText, findAllByText, findByTestId } = createView()
await findByText('Help')
- session.views[0].setNewView(25.07852564102564, 283)
+ view.setNewView(25.07852564102564, 283)
fireEvent.click(
await findByTestId('htsTrackEntry-volvox_cram_pileup', {}, delay),
@@ -77,43 +65,32 @@ test('test stats estimation pileup, force load to see', async () => {
fireEvent.click(buttons[0])
expectCanvasMatch(
- await findByTestId(
- 'prerendered_canvas_{volvox}ctgA:1..20,063-0_done',
- {},
- delay,
- ),
+ await findByTestId(pc('{volvox}ctgA:1..20,063-0'), {}, delay),
)
}, 30000)
test('test stats estimation on vcf track, zoom in to see', async () => {
- const pluginManager = getPluginManager()
- const { session } = pluginManager.rootModel
- const { findByText, findAllByText, findAllByTestId, findByTestId } = render(
- ,
- )
+ const { view, findByText, findAllByText, findAllByTestId, findByTestId } =
+ createView()
await findByText('Help')
- session.views[0].setNewView(34, 5)
+ view.setNewView(34, 5)
fireEvent.click(await findByTestId('htsTrackEntry-variant_colors', {}, delay))
await findAllByText(/Zoom in to see features/, {}, delay)
- const before = session.views[0].bpPerPx
+ const before = view.bpPerPx
fireEvent.click(await findByTestId('zoom_in'))
// found it helps avoid flaky test to check that it is zoomed in before
// checking snapshot (even though it seems like it is unneeded) #2673
- await waitFor(() => expect(session.views[0].bpPerPx).toBe(before / 2), delay)
+ await waitFor(() => expect(view.bpPerPx).toBe(before / 2), delay)
await findAllByTestId('box-test-vcf-605560', {}, delay)
}, 30000)
test('test stats estimation on vcf track, force load to see', async () => {
- const pluginManager = getPluginManager()
- const state = pluginManager.rootModel
- const { findByText, findAllByText, findByTestId } = render(
- ,
- )
+ const { view, findByText, findAllByText, findByTestId } = createView()
await findByText('Help')
- state.session.views[0].setNewView(34, 5)
+ view.setNewView(34, 5)
await findAllByText('ctgA', {}, delay)
fireEvent.click(await findByTestId('htsTrackEntry-variant_colors', {}, delay))
diff --git a/products/jbrowse-web/src/tests/TextSearchingImportForm.test.tsx b/products/jbrowse-web/src/tests/TextSearchingImportForm.test.tsx
index 186e9af76b..ecbacbbf84 100644
--- a/products/jbrowse-web/src/tests/TextSearchingImportForm.test.tsx
+++ b/products/jbrowse-web/src/tests/TextSearchingImportForm.test.tsx
@@ -1,14 +1,10 @@
-import React from 'react'
-import { waitFor, fireEvent, render } from '@testing-library/react'
+import { waitFor, fireEvent } from '@testing-library/react'
import { LocalFile } from 'generic-filehandle'
import { clearCache } from '@jbrowse/core/util/io/RemoteFileWithRangeCache'
import { clearAdapterCache } from '@jbrowse/core/data_adapters/dataAdapterCache'
-import { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'
// locals
-import { setup, generateReadBuffer, getPluginManager, JBrowse } from './util'
-
-type LGV = LinearGenomeViewModel
+import { setup, generateReadBuffer, createView } from './util'
setup()
@@ -20,9 +16,10 @@ beforeEach(() => {
fetch.resetMocks()
// @ts-ignore
fetch.mockResponse(
- generateReadBuffer((url: string) => {
- return new LocalFile(require.resolve(`../../test_data/volvox/${url}`))
- }),
+ generateReadBuffer(
+ (url: string) =>
+ new LocalFile(require.resolve(`../../test_data/volvox/${url}`)),
+ ),
)
})
@@ -31,18 +28,15 @@ const delay = { timeout: 10000 }
const total = 30000
async function doSetup(val?: unknown) {
- const pluginManager = getPluginManager(val)
- const state = pluginManager.rootModel
const {
+ view,
findByText,
findByTestId,
findAllByText,
findByPlaceholderText,
getByPlaceholderText,
- } = render()
+ } = createView(val)
- // @ts-ignore
- const view = state.session.views[0] as LGV
view.clearView()
const autocomplete = await findByTestId('autocomplete')
@@ -61,7 +55,6 @@ async function doSetup(val?: unknown) {
findAllByText,
findByPlaceholderText,
getByPlaceholderText,
- state,
}
}
@@ -73,15 +66,10 @@ test(
fireEvent.change(input, { target: { value: 'eden.1' } })
fireEvent.keyDown(input, { key: 'Enter', code: 'Enter' })
fireEvent.click(await findByText('Open'))
-
- await waitFor(
- () =>
- expect(
- (getByPlaceholderText('Search for location') as HTMLInputElement)
- .value,
- ).toBe('ctgA:1,055..9,005'),
- delay,
- )
+ await waitFor(() => {
+ const n = getByPlaceholderText('Search for location') as HTMLInputElement
+ expect(n.value).toBe('ctgA:1,055..9,005')
+ }, delay)
},
total,
)
@@ -98,14 +86,10 @@ test(
fireEvent.keyDown(autocomplete, { key: 'Enter', code: 'Enter' })
fireEvent.click(await findByText('Open'))
- await waitFor(
- () =>
- expect(
- (getByPlaceholderText('Search for location') as HTMLInputElement)
- .value,
- ).toBe('ctgA:1,055..9,005'),
- delay,
- )
+ await waitFor(() => {
+ const n = getByPlaceholderText('Search for location') as HTMLInputElement
+ expect(n.value).toBe('ctgA:1,055..9,005')
+ }, delay)
},
total,
)
@@ -122,14 +106,10 @@ test(
fireEvent.keyDown(autocomplete, { key: 'Enter', code: 'Enter' })
fireEvent.click(await findByText('Open'))
- await waitFor(
- () =>
- expect(
- (getByPlaceholderText('Search for location') as HTMLInputElement)
- .value,
- ).toBe('ctgB:1..6,079'),
- delay,
- )
+ await waitFor(() => {
+ const n = getByPlaceholderText('Search for location') as HTMLInputElement
+ expect(n.value).toBe('ctgB:1..6,079')
+ }, delay)
},
total,
)
diff --git a/products/jbrowse-web/src/tests/__image_snapshots__/alignments-features-test-js-color-by-strand-1-snap.png b/products/jbrowse-web/src/tests/__image_snapshots__/alignments-features-test-tsx-color-by-strand-1-snap.png
similarity index 100%
rename from products/jbrowse-web/src/tests/__image_snapshots__/alignments-features-test-js-color-by-strand-1-snap.png
rename to products/jbrowse-web/src/tests/__image_snapshots__/alignments-features-test-tsx-color-by-strand-1-snap.png
diff --git a/products/jbrowse-web/src/tests/__image_snapshots__/alignments-features-test-js-color-by-tag-1-snap.png b/products/jbrowse-web/src/tests/__image_snapshots__/alignments-features-test-tsx-color-by-tag-1-snap.png
similarity index 100%
rename from products/jbrowse-web/src/tests/__image_snapshots__/alignments-features-test-js-color-by-tag-1-snap.png
rename to products/jbrowse-web/src/tests/__image_snapshots__/alignments-features-test-tsx-color-by-tag-1-snap.png
diff --git a/products/jbrowse-web/src/tests/__image_snapshots__/alignments-features-test-js-opens-the-track-menu-and-enables-soft-clipping-1-snap.png b/products/jbrowse-web/src/tests/__image_snapshots__/alignments-features-test-tsx-opens-the-track-menu-and-enables-soft-clipping-1-snap.png
similarity index 100%
rename from products/jbrowse-web/src/tests/__image_snapshots__/alignments-features-test-js-opens-the-track-menu-and-enables-soft-clipping-1-snap.png
rename to products/jbrowse-web/src/tests/__image_snapshots__/alignments-features-test-tsx-opens-the-track-menu-and-enables-soft-clipping-1-snap.png
diff --git a/products/jbrowse-web/src/tests/__image_snapshots__/alignments-features-test-js-selects-a-sort-sort-by-strand-1-snap.png b/products/jbrowse-web/src/tests/__image_snapshots__/alignments-features-test-tsx-selects-a-sort-sort-by-strand-1-snap.png
similarity index 100%
rename from products/jbrowse-web/src/tests/__image_snapshots__/alignments-features-test-js-selects-a-sort-sort-by-strand-1-snap.png
rename to products/jbrowse-web/src/tests/__image_snapshots__/alignments-features-test-tsx-selects-a-sort-sort-by-strand-1-snap.png
diff --git a/products/jbrowse-web/src/tests/__image_snapshots__/alignments-test-js-opens-an-alignments-track-1-snap.png b/products/jbrowse-web/src/tests/__image_snapshots__/alignments-test-tsx-opens-an-alignments-track-1-snap.png
similarity index 100%
rename from products/jbrowse-web/src/tests/__image_snapshots__/alignments-test-js-opens-an-alignments-track-1-snap.png
rename to products/jbrowse-web/src/tests/__image_snapshots__/alignments-test-tsx-opens-an-alignments-track-1-snap.png
diff --git a/products/jbrowse-web/src/tests/__image_snapshots__/alignments-test-js-opens-an-alignments-track-2-snap.png b/products/jbrowse-web/src/tests/__image_snapshots__/alignments-test-tsx-opens-an-alignments-track-2-snap.png
similarity index 100%
rename from products/jbrowse-web/src/tests/__image_snapshots__/alignments-test-js-opens-an-alignments-track-2-snap.png
rename to products/jbrowse-web/src/tests/__image_snapshots__/alignments-test-tsx-opens-an-alignments-track-2-snap.png
diff --git a/products/jbrowse-web/src/tests/__image_snapshots__/alignments-test-js-test-snpcoverage-doesnt-count-snpcoverage-1-snap.png b/products/jbrowse-web/src/tests/__image_snapshots__/alignments-test-tsx-test-snpcoverage-doesnt-count-snpcoverage-1-snap.png
similarity index 100%
rename from products/jbrowse-web/src/tests/__image_snapshots__/alignments-test-js-test-snpcoverage-doesnt-count-snpcoverage-1-snap.png
rename to products/jbrowse-web/src/tests/__image_snapshots__/alignments-test-tsx-test-snpcoverage-doesnt-count-snpcoverage-1-snap.png
diff --git a/products/jbrowse-web/src/tests/__image_snapshots__/alignments-test-js-test-snpcoverage-doesnt-count-snpcoverage-2-snap.png b/products/jbrowse-web/src/tests/__image_snapshots__/alignments-test-tsx-test-snpcoverage-doesnt-count-snpcoverage-2-snap.png
similarity index 100%
rename from products/jbrowse-web/src/tests/__image_snapshots__/alignments-test-js-test-snpcoverage-doesnt-count-snpcoverage-2-snap.png
rename to products/jbrowse-web/src/tests/__image_snapshots__/alignments-test-tsx-test-snpcoverage-doesnt-count-snpcoverage-2-snap.png
diff --git a/products/jbrowse-web/src/tests/__image_snapshots__/big-wig-test-js-open-a-bigwig-density-track-1-snap.png b/products/jbrowse-web/src/tests/__image_snapshots__/big-wig-test-tsx-open-a-bigwig-density-track-1-snap.png
similarity index 100%
rename from products/jbrowse-web/src/tests/__image_snapshots__/big-wig-test-js-open-a-bigwig-density-track-1-snap.png
rename to products/jbrowse-web/src/tests/__image_snapshots__/big-wig-test-tsx-open-a-bigwig-density-track-1-snap.png
diff --git a/products/jbrowse-web/src/tests/__image_snapshots__/big-wig-test-js-open-a-bigwig-line-track-2-1-snap.png b/products/jbrowse-web/src/tests/__image_snapshots__/big-wig-test-tsx-open-a-bigwig-line-track-2-1-snap.png
similarity index 100%
rename from products/jbrowse-web/src/tests/__image_snapshots__/big-wig-test-js-open-a-bigwig-line-track-2-1-snap.png
rename to products/jbrowse-web/src/tests/__image_snapshots__/big-wig-test-tsx-open-a-bigwig-line-track-2-1-snap.png
diff --git a/products/jbrowse-web/src/tests/__image_snapshots__/big-wig-test-js-open-a-bigwig-track-1-snap.png b/products/jbrowse-web/src/tests/__image_snapshots__/big-wig-test-tsx-open-a-bigwig-track-1-snap.png
similarity index 100%
rename from products/jbrowse-web/src/tests/__image_snapshots__/big-wig-test-js-open-a-bigwig-track-1-snap.png
rename to products/jbrowse-web/src/tests/__image_snapshots__/big-wig-test-tsx-open-a-bigwig-track-1-snap.png
diff --git a/products/jbrowse-web/src/tests/__image_snapshots__/dotplot-test-js-open-a-dotplot-view-2-snap.png b/products/jbrowse-web/src/tests/__image_snapshots__/dotplot-test-js-open-a-dotplot-view-2-snap.png
deleted file mode 100644
index f8f9d03675..0000000000
Binary files a/products/jbrowse-web/src/tests/__image_snapshots__/dotplot-test-js-open-a-dotplot-view-2-snap.png and /dev/null differ
diff --git a/products/jbrowse-web/src/tests/__image_snapshots__/dotplot-test-js-open-a-dotplot-view-1-snap.png b/products/jbrowse-web/src/tests/__image_snapshots__/dotplot-test-tsx-open-a-dotplot-view-1-snap.png
similarity index 100%
rename from products/jbrowse-web/src/tests/__image_snapshots__/dotplot-test-js-open-a-dotplot-view-1-snap.png
rename to products/jbrowse-web/src/tests/__image_snapshots__/dotplot-test-tsx-open-a-dotplot-view-1-snap.png
diff --git a/products/jbrowse-web/src/tests/__image_snapshots__/dotplot-test-js-open-a-dotplot-view-with-import-form-1-snap.png b/products/jbrowse-web/src/tests/__image_snapshots__/dotplot-test-tsx-open-a-dotplot-view-with-import-form-1-snap.png
similarity index 100%
rename from products/jbrowse-web/src/tests/__image_snapshots__/dotplot-test-js-open-a-dotplot-view-with-import-form-1-snap.png
rename to products/jbrowse-web/src/tests/__image_snapshots__/dotplot-test-tsx-open-a-dotplot-view-with-import-form-1-snap.png
diff --git a/products/jbrowse-web/src/tests/__image_snapshots__/hic-test-js-hic-1-snap.png b/products/jbrowse-web/src/tests/__image_snapshots__/hic-test-tsx-hic-1-snap.png
similarity index 100%
rename from products/jbrowse-web/src/tests/__image_snapshots__/hic-test-js-hic-1-snap.png
rename to products/jbrowse-web/src/tests/__image_snapshots__/hic-test-tsx-hic-1-snap.png
diff --git a/products/jbrowse-web/src/tests/__image_snapshots__/reload-test-js-reloads-alignments-track-bai-404-1-snap.png b/products/jbrowse-web/src/tests/__image_snapshots__/reload-test-tsx-reloads-alignments-track-bai-404-1-snap.png
similarity index 100%
rename from products/jbrowse-web/src/tests/__image_snapshots__/reload-test-js-reloads-alignments-track-bai-404-1-snap.png
rename to products/jbrowse-web/src/tests/__image_snapshots__/reload-test-tsx-reloads-alignments-track-bai-404-1-snap.png
diff --git a/products/jbrowse-web/src/tests/__image_snapshots__/reload-test-js-reloads-alignments-track-bam-404-1-snap.png b/products/jbrowse-web/src/tests/__image_snapshots__/reload-test-tsx-reloads-alignments-track-bam-404-1-snap.png
similarity index 100%
rename from products/jbrowse-web/src/tests/__image_snapshots__/reload-test-js-reloads-alignments-track-bam-404-1-snap.png
rename to products/jbrowse-web/src/tests/__image_snapshots__/reload-test-tsx-reloads-alignments-track-bam-404-1-snap.png
diff --git a/products/jbrowse-web/src/tests/__image_snapshots__/reload-test-js-reloads-alignments-track-crai-404-1-snap.png b/products/jbrowse-web/src/tests/__image_snapshots__/reload-test-tsx-reloads-alignments-track-crai-404-1-snap.png
similarity index 100%
rename from products/jbrowse-web/src/tests/__image_snapshots__/reload-test-js-reloads-alignments-track-crai-404-1-snap.png
rename to products/jbrowse-web/src/tests/__image_snapshots__/reload-test-tsx-reloads-alignments-track-crai-404-1-snap.png
diff --git a/products/jbrowse-web/src/tests/__image_snapshots__/reload-test-js-reloads-alignments-track-cram-404-1-snap.png b/products/jbrowse-web/src/tests/__image_snapshots__/reload-test-tsx-reloads-alignments-track-cram-404-1-snap.png
similarity index 100%
rename from products/jbrowse-web/src/tests/__image_snapshots__/reload-test-js-reloads-alignments-track-cram-404-1-snap.png
rename to products/jbrowse-web/src/tests/__image_snapshots__/reload-test-tsx-reloads-alignments-track-cram-404-1-snap.png
diff --git a/products/jbrowse-web/src/tests/__image_snapshots__/reload-test-js-reloads-bigwig-bw-404-1-snap.png b/products/jbrowse-web/src/tests/__image_snapshots__/reload-test-tsx-reloads-bigwig-bw-404-1-snap.png
similarity index 100%
rename from products/jbrowse-web/src/tests/__image_snapshots__/reload-test-js-reloads-bigwig-bw-404-1-snap.png
rename to products/jbrowse-web/src/tests/__image_snapshots__/reload-test-tsx-reloads-bigwig-bw-404-1-snap.png
diff --git a/products/jbrowse-web/src/tests/__image_snapshots__/stats-estimation-test-js-test-stats-estimation-pileup-force-load-to-see-1-snap.png b/products/jbrowse-web/src/tests/__image_snapshots__/stats-estimation-test-tsx-test-stats-estimation-pileup-force-load-to-see-1-snap.png
similarity index 100%
rename from products/jbrowse-web/src/tests/__image_snapshots__/stats-estimation-test-js-test-stats-estimation-pileup-force-load-to-see-1-snap.png
rename to products/jbrowse-web/src/tests/__image_snapshots__/stats-estimation-test-tsx-test-stats-estimation-pileup-force-load-to-see-1-snap.png
diff --git a/products/jbrowse-web/src/tests/__image_snapshots__/stats-estimation-test-js-test-stats-estimation-pileup-zoom-in-to-see-1-snap.png b/products/jbrowse-web/src/tests/__image_snapshots__/stats-estimation-test-tsx-test-stats-estimation-pileup-zoom-in-to-see-1-snap.png
similarity index 100%
rename from products/jbrowse-web/src/tests/__image_snapshots__/stats-estimation-test-js-test-stats-estimation-pileup-zoom-in-to-see-1-snap.png
rename to products/jbrowse-web/src/tests/__image_snapshots__/stats-estimation-test-tsx-test-stats-estimation-pileup-zoom-in-to-see-1-snap.png
diff --git a/products/jbrowse-web/src/tests/util.tsx b/products/jbrowse-web/src/tests/util.tsx
index 5663794835..4b67c40535 100644
--- a/products/jbrowse-web/src/tests/util.tsx
+++ b/products/jbrowse-web/src/tests/util.tsx
@@ -1,4 +1,6 @@
import React from 'react'
+// eslint-disable-next-line import/no-extraneous-dependencies
+import { render } from '@testing-library/react'
// eslint-disable-next-line import/no-extraneous-dependencies
import { GenericFilehandle } from 'generic-filehandle'
@@ -16,6 +18,10 @@ import corePlugins from '../corePlugins'
// eslint-disable-next-line import/no-extraneous-dependencies
import { Image, createCanvas } from 'canvas'
+import { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'
+
+type LGV = LinearGenomeViewModel
+
jest.mock('../makeWorkerInstance', () => () => {})
// @ts-ignore
@@ -117,8 +123,8 @@ export function canvasToBuffer(canvas: HTMLCanvasElement) {
)
}
-export function expectCanvasMatch(canvas: HTMLCanvasElement) {
- expect(canvasToBuffer(canvas)).toMatchImageSnapshot({
+export function expectCanvasMatch(canvas: HTMLElement) {
+ expect(canvasToBuffer(canvas as HTMLCanvasElement)).toMatchImageSnapshot({
failureThreshold: 0.05,
failureThresholdType: 'percent',
})
@@ -132,3 +138,18 @@ export function JBrowse(props: any) {
)
}
+
+export const hts = (str: string) => 'htsTrackEntry-' + str
+export const pc = (str: string) => `prerendered_canvas_${str}_done`
+
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
+export function createView(args?: any) {
+ const pm = getPluginManager(args)
+ const state = pm.rootModel
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
+ const { session } = state!
+ const rest = render()
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
+ const view = session!.views[0] as LGV
+ return { view, state, ...rest }
+}