Giter Club home page Giter Club logo

mvermaat / crm.specflow Goto Github PK

View Code? Open in Web Editor NEW
28.0 10.0 16.0 6.71 MB

D365 Extension for SpecFlow allows you to automatically test your Dynamics 365 CE implementation. It provides a broad set of SpecFlow steps to help you create your scripts very rapidly. It leverages the EasyRepro library from Microsoft for the User Interface related tests.

License: GNU Lesser General Public License v3.0

C# 70.73% Gherkin 7.17% Batchfile 0.10% PowerShell 21.49% JavaScript 0.30% XSLT 0.20%
specflow dynamics-365 testing testing-framework nuget-package dynamics-crm customer-engagement customerengagement devops d365

crm.specflow's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

crm.specflow's Issues

Use uniform parsing of decimal/double

Decimal fields are currently parsed based on the settings of the computer. This means that a test may not work when running from another computer or a build server. Use uniform parsing where the format can be configured.

Secondary check if the format must be passed for UI tests when writing decimal numbers, maybe based on user settings.

Quick Views are included into available controls on a form

When a form has a quick view, the fields on the quick view form are treated like they are fields on the main form. This causes problems if the logicalname of a field in the quick view form is the same as a field on the main entity.

Unable to find the ribbon

When running Specflow locally and activating a default Quote, for whatever reason the ribbon happened to pop in a few milliseconds too late.

This made the test fail with the message "Unable to find the ribbon" (method IsButtonAvailable() in CommandBarActions.cs). Some form of delay/ rechecking would be helpful in such cases.

Support multiple forms per entity

Sometimes an entity can have multiple forms configured in a model app. Support testing on multiple forms or some sort of form selection

Create YAML Pipelines instead of package deployment

Currently a deployment package is used for deployment. This isn't really a good solution.

Use a proper YAML pipeline for Azure DevOps.
Add the extracted solution to source control, so anyone can pack and import this package

License file is missing

I just wanted to point out that this project does not have a license file. I also did not see a license for the NuGet package. This makes it difficult to determine whether this code and/or NuGet package can be used as part of other projects.

Lookups in UI testing not selected properly

Currently in EasyRepro it just selects option X, while in this project we know the actual GUID of the record. Implement the following logic:

  • Open lookup dialog (GUIDs are only available in that dialog)
  • Search for the name of the record
  • browse through the griditems until the matching record is found

Using UI for Testing and API for data setup in Same Test

I am trying to verify that the correct fields are visible on a form, but am having some trouble with record setup. Since the records are created via integration and have forms that are completely read-only, they cannot be created through the UI.

Is there a way to set up data through the API and then test the form field visibility using the UI as part of a single test? I reviewed the code and do not see a simple way to do this.

Add functionality for merging records

{subordindateAlias} is fully merged into {targetAlias}
Merge one record into another using the merge command available on Accounts, Contacts, Leads and Cases. All fields that aren't empty will be pushed to the target record. If you want to use a selection of fields, use the step below.

The following fields of {subordindateAlias} are fully merged into {targetAlias}
Merge one record into another using the merge command available on Accounts, Contacts, Leads and Cases. The fields supplied in the table will be pushed to the target. It won't filter out empty fields.

UI Record Creation Fails When Field in Header

The following step fails with the error below. This appears to be because in my target environment, the "Job Title" field is in the form header.

Step

Given a contact named TestContact with the following values
    | Property   | Value |
    | First Name | John  |
    | Last Name  | Smith |
    | Job Title  | CLO   |

Exception

OpenQA.Selenium.WebDriverException
  HResult=0x80131500
  Message=javascript error: Cannot read property 'getName' of null
  (Session info: chrome=80.0.3987.163)
  Source=WebDriver
  StackTrace:
   at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse)
   at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
   at OpenQA.Selenium.Remote.RemoteWebDriver.ExecuteScriptCommand(String script, String commandName, Object[] args)
   at OpenQA.Selenium.Remote.RemoteWebDriver.ExecuteScript(String script, Object[] args)
   at Microsoft.Dynamics365.UIAutomation.Browser.SeleniumExtensions.ExecuteScript(IWebDriver driver, String script, Object[] args)
   at Vermaat.Crm.Specflow.EasyRepro.FormField.GetTabName() in C:\Projects\open-source\Crm.Specflow\Vermaat.Crm.Specflow\EasyRepro\FormField.cs:line 98
   at Vermaat.Crm.Specflow.EasyRepro.FormData.FillForm(CrmTestingContext crmContext, Table formData) in C:\Projects\open-source\Crm.Specflow\Vermaat.Crm.Specflow\EasyRepro\FormData.cs:line 95
   at Vermaat.Crm.Specflow.Commands.CreateRecordCommand.ExecuteBrowser() in C:\Projects\open-source\Crm.Specflow\Vermaat.Crm.Specflow\Commands\CreateRecordCommand.cs:line 36
   at Vermaat.Crm.Specflow.Commands.BrowserCommandFunc`1.Execute(CommandAction commandAction) in C:\Projects\open-source\Crm.Specflow\Vermaat.Crm.Specflow\Commands\BrowserCommand.cs:line 29
   at Vermaat.Crm.Specflow.CommandProcessor.Execute[TResult](ICommandFunc`1 command, CommandAction commandAction) in C:\Projects\open-source\Crm.Specflow\Vermaat.Crm.Specflow\CommandProcessor.cs:line 55
   at Vermaat.Crm.Specflow.CommandProcessor.Execute[TResult](ICommandFunc`1 command) in C:\Projects\open-source\Crm.Specflow\Vermaat.Crm.Specflow\CommandProcessor.cs:line 47
   at Vermaat.Crm.Specflow.Steps.GeneralSteps.GivenEntityWithValues(String entityName, String alias, Table criteria) in C:\Projects\open-source\Crm.Specflow\Vermaat.Crm.Specflow\Steps\GeneralSteps.cs:line 40

Check if Subgrid is visible

Is it possible to check whether a subgrid or section is visible on a form?

I saw the form state command. But, it looks like it only returns attributes.

Add value verification and retries when filling forms

In some edge cases it can happen that a value isn't set properly. This usually happens if fields are being set fast. In example

Property Value
Product TestProduct
Price 100

Using the follow table as values for a record and there is client side functionality that defaults the price of the product. What sometimes happens now is that while the software tries to write 100, the default price 50 is set. This causes the end result of 50100.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.