diff --git a/.github/workflows/github-actions-demo.yml b/.github/workflows/github-actions-demo.yml old mode 100644 new mode 100755 index a31a2e5..8276c82 --- a/.github/workflows/github-actions-demo.yml +++ b/.github/workflows/github-actions-demo.yml @@ -7,8 +7,8 @@ jobs: runs-on: ubuntu-latest steps: - name: 'Checkout the repository' - uses: actions/checkout@v3 - + uses: actions/checkout@v2 + - name: 'Install dependencies' run: npm install --force @@ -16,4 +16,5 @@ jobs: run: cd resources && python3 -m http.server 3000 & - name: 'Run test' - run: npx percy exec -- npm run percy-test \ No newline at end of file + # run: npx percy exec -- npm run percy-test + run: npm run bstack-single \ No newline at end of file diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/.percy.yml b/.percy.yml old mode 100644 new mode 100755 index 16e7249..4d8ce7e --- a/.percy.yml +++ b/.percy.yml @@ -2,14 +2,18 @@ version: 2 snapshot: widths: - 375 - - 768 - 1280 minHeight: 1024 percyCSS: "" + enableJavascript: true discovery: allowedHostnames: [] disallowedHostnames: [] - networkIdleTimeout: 100 + networkIdleTimeout: 750 + launch-options: + headless: false + disableCache: false + concurrency: 1 upload: files: "**/*.{png,jpg,jpeg}" ignore: "" diff --git a/README.md b/README.md old mode 100644 new mode 100755 index 91d0b5a..ed8d760 --- a/README.md +++ b/README.md @@ -413,3 +413,8 @@ In this section, we will run the test cases to test the internally hosted websit - The test `offers/offers_for_mumbai.spec.ts` does not work due to a known and recognized issue from Cypress. More information can be found [here](https://github.com/cypress-io/cypress/issues/2671). - Warning message `Couldn't find tsconfig.json. tsconfig-paths will be skipped` is seen because of an open issue which can be found [here](https://github.com/cypress-io/cypress/issues/9048). + + + ## Steps to start local server for Percy tests + - `cd resources` + - `python -m http.server 3000` \ No newline at end of file diff --git a/cypress.json b/cypress.json old mode 100644 new mode 100755 index fb8d783..878d478 --- a/cypress.json +++ b/cypress.json @@ -20,6 +20,9 @@ "json":false, "timestamp" : "mm/dd/yyyy_HH:MM:ss" }, + "env": { + "SAMPLE_ENV": "demouser" + }, "component": { "componentFolder": "src", "testFiles": "**/*spec.{js,jsx,ts,tsx}" diff --git a/cypress/fixtures/product.json b/cypress/fixtures/product.json old mode 100644 new mode 100755 diff --git a/cypress/fixtures/user.json b/cypress/fixtures/user.json old mode 100644 new mode 100755 diff --git a/cypress/integration/cypress.json b/cypress/integration/cypress.json new file mode 100755 index 0000000..0967ef4 --- /dev/null +++ b/cypress/integration/cypress.json @@ -0,0 +1 @@ +{} diff --git a/cypress/integration/cypress/fixtures/example.json b/cypress/integration/cypress/fixtures/example.json new file mode 100755 index 0000000..02e4254 --- /dev/null +++ b/cypress/integration/cypress/fixtures/example.json @@ -0,0 +1,5 @@ +{ + "name": "Using fixtures to represent data", + "email": "hello@cypress.io", + "body": "Fixtures are a great way to mock data for responses to routes" +} diff --git a/cypress/integration/cypress/integration/1-getting-started/todo.spec.js b/cypress/integration/cypress/integration/1-getting-started/todo.spec.js new file mode 100755 index 0000000..4768ff9 --- /dev/null +++ b/cypress/integration/cypress/integration/1-getting-started/todo.spec.js @@ -0,0 +1,143 @@ +/// + +// Welcome to Cypress! +// +// This spec file contains a variety of sample tests +// for a todo list app that are designed to demonstrate +// the power of writing tests in Cypress. +// +// To learn more about how Cypress works and +// what makes it such an awesome testing tool, +// please read our getting started guide: +// https://on.cypress.io/introduction-to-cypress + +describe('example to-do app', () => { + beforeEach(() => { + // Cypress starts out with a blank slate for each test + // so we must tell it to visit our website with the `cy.visit()` command. + // Since we want to visit the same URL at the start of all our tests, + // we include it in our beforeEach function so that it runs before each test + cy.visit('https://example.cypress.io/todo') + }) + + it('displays two todo items by default', () => { + // We use the `cy.get()` command to get all elements that match the selector. + // Then, we use `should` to assert that there are two matched items, + // which are the two default items. + cy.get('.todo-list li').should('have.length', 2) + + // We can go even further and check that the default todos each contain + // the correct text. We use the `first` and `last` functions + // to get just the first and last matched elements individually, + // and then perform an assertion with `should`. + cy.get('.todo-list li').first().should('have.text', 'Pay electric bill') + cy.get('.todo-list li').last().should('have.text', 'Walk the dog') + }) + + it('can add new todo items', () => { + // We'll store our item text in a variable so we can reuse it + const newItem = 'Feed the cat' + + // Let's get the input element and use the `type` command to + // input our new list item. After typing the content of our item, + // we need to type the enter key as well in order to submit the input. + // This input has a data-test attribute so we'll use that to select the + // element in accordance with best practices: + // https://on.cypress.io/selecting-elements + cy.get('[data-test=new-todo]').type(`${newItem}{enter}`) + + // Now that we've typed our new item, let's check that it actually was added to the list. + // Since it's the newest item, it should exist as the last element in the list. + // In addition, with the two default items, we should have a total of 3 elements in the list. + // Since assertions yield the element that was asserted on, + // we can chain both of these assertions together into a single statement. + cy.get('.todo-list li') + .should('have.length', 3) + .last() + .should('have.text', newItem) + }) + + it('can check off an item as completed', () => { + // In addition to using the `get` command to get an element by selector, + // we can also use the `contains` command to get an element by its contents. + // However, this will yield the