Skip to content

Commit

Permalink
add (failing) e2e test for remote xhr (multipart)
Browse files Browse the repository at this point in the history
regression caused by #3834
  • Loading branch information
mifi committed Aug 10, 2022
1 parent 90b62c7 commit 66698a9
Show file tree
Hide file tree
Showing 4 changed files with 72 additions and 0 deletions.
18 changes: 18 additions & 0 deletions e2e/clients/dashboard-xhr/app.js
@@ -0,0 +1,18 @@
import { Uppy } from '@uppy/core'
import Dashboard from '@uppy/dashboard'
import XHRUpload from '@uppy/xhr-upload'
import Unsplash from '@uppy/unsplash'
import Url from '@uppy/url'

import '@uppy/core/dist/style.css'
import '@uppy/dashboard/dist/style.css'

const companionUrl = 'http://localhost:3020'
const uppy = new Uppy()
.use(Dashboard, { target: '#app', inline: true })
.use(XHRUpload, { endpoint: 'https://xhr-server.herokuapp.com/upload', limit: 6 })
.use(Url, { target: Dashboard, companionUrl })
.use(Unsplash, { target: Dashboard, companionUrl })

// Keep this here to access uppy in tests
window.uppy = uppy
11 changes: 11 additions & 0 deletions e2e/clients/dashboard-xhr/index.html
@@ -0,0 +1,11 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<title>dashboard-xhr</title>
<script defer type="module" src="app.js"></script>
</head>
<body>
<div id="app"></div>
</body>
</html>
1 change: 1 addition & 0 deletions e2e/clients/index.html
Expand Up @@ -12,6 +12,7 @@ <h1>Test apps</h1>
<li><a href="react/index.html">react</a></li>
<li><a href="dashboard-transloadit/index.html">dashboard-transloadit</a></li>
<li><a href="dashboard-tus/index.html">dashboard-tus</a></li>
<li><a href="dashboard-xhr/index.html">dashboard-xhr</a></li>
<li><a href="dashboard-ui/index.html">dashboard-ui</a></li>
<li><a href="dashboard-vue/index.html">dashboard-vue</a></li>
</ul>
Expand Down
42 changes: 42 additions & 0 deletions e2e/cypress/integration/dashboard-xhr.spec.ts
@@ -0,0 +1,42 @@
// NOTE: we have to use different files to upload per test
// because we are uploading to https://tusd.tusdemo.net,
// constantly uploading the same images gives a different cached result (or something).
describe('Dashboard with XHR', () => {
beforeEach(() => {
cy.visit('/dashboard-xhr')
cy.get('.uppy-Dashboard-input:first').as('file-input')
cy.intercept('http://localhost:3020/url/*').as('url')
cy.intercept('http://localhost:3020/search/unsplash/*').as('unsplash')
})

it('should upload remote image with URL plugin', () => {
cy.get('[data-cy="Url"]').click()
cy.get('.uppy-Url-input').type('https://raw.githubusercontent.com/transloadit/uppy/main/e2e/cypress/fixtures/images/cat.jpg')
cy.get('.uppy-Url-importButton').click()
cy.get('.uppy-StatusBar-actionBtn--upload').click()
cy.wait('@url')
cy.get('.uppy-StatusBar-statusPrimary').should('contain', 'Complete')
})

it('should upload remote image with Unsplash plugin', () => {
cy.get('[data-cy="Unsplash"]').click()
cy.get('.uppy-SearchProvider-input').type('book')
cy.get('.uppy-SearchProvider-searchButton').click()
cy.wait('@unsplash')
// Test that the author link is visible
cy.get('.uppy-ProviderBrowserItem')
.first()
.within(() => {
cy.root().click()
// We have hover states that show the author
// but we don't have hover in e2e, so we focus after the click
// to get the same effect. Also tests keyboard users this way.
cy.get('input[type="checkbox"]').focus()
cy.get('a').should('have.css', 'display', 'block')
})
cy.get('.uppy-c-btn-primary').click()
cy.get('.uppy-StatusBar-actionBtn--upload').click()
cy.wait('@unsplash')
cy.get('.uppy-StatusBar-statusPrimary').should('contain', 'Complete')
})
})

0 comments on commit 66698a9

Please sign in to comment.