diff --git a/tests/mssql.html b/tests/mssql.html
new file mode 100644
index 00000000..40a55d98
--- /dev/null
+++ b/tests/mssql.html
@@ -0,0 +1,265 @@
+
+
+
+
+
+ Katalon MS SQL
+
+
+
+
+Login |
+
+
+open | /adminer/ | |
+select | name=lang | label=English |
+clickAndWait | css=#lang > input[type="submit"] | |
+select | name=auth[driver] | label=MS SQL |
+type | name=auth[server] | (local) |
+type | id=username | ODBC |
+type | name=auth[password] | ODBC |
+clickAndWait | xpath=//input[@value='Login'] | |
+
+
+
+Create table |
+
+
+open | /adminer/?mssql=%28local%29&username=ODBC&db=adminer_test&ns=dbo | |
+clickAndWait | link=Create table | |
+type | name | interprets |
+type | fields[1][field] | id |
+select | fields[1][type] | label=int |
+click | //input[@name='auto_increment_col' and @value='1'] | |
+type | fields[1.1][field] | name |
+select | fields[1.1][type] | label=varchar |
+type | fields[1.1][length] | 50 |
+uncheck | name=comments | |
+clickAndWait | name=comments | |
+type | fields[1.1][comment] | Interpret |
+type | Comment | Interprets |
+clickAndWait | //input[@value='Save'] | |
+verifyTextPresent | Table has been created. | |
+
+
+
+Create index |
+
+
+open | /adminer/?mssql=%28local%29&username=ODBC&db=adminer_test&ns=dbo&table=interprets | |
+clickAndWait | link=Alter indexes | |
+select | indexes[2][type] | label=PRIMARY |
+select | indexes[2][columns][1] | label=name |
+verifyValue | name=indexes[2][name] | interprets_name |
+clickAndWait | //input[@value='Save'] | |
+verifyTextPresent | Table 'interprets' already has a primary key defined on it. | |
+select | indexes[2][type] | label=INDEX |
+clickAndWait | //input[@value='Save'] | |
+verifyTextPresent | Indexes have been altered. | |
+
+
+
+Create table 2 |
+
+
+open | /adminer/?mssql=%28local%29&username=ODBC&db=adminer_test&ns=dbo&table=interprets | |
+clickAndWait | link=Create table | |
+type | name | albums |
+click | //input[@name='auto_increment_col' and @value='1'] | |
+type | fields[1.1][field] | interpret |
+select | fields[1.1][type] | label=int |
+type | fields[1.11][field] | title |
+select | fields[1.11][type] | label=varchar |
+type | fields[1.11][length] | 50 |
+check | name=comments | |
+type | fields[1.1][comment] | Interpret |
+type | fields[1.11][comment] | Album |
+type | Comment | Albums |
+clickAndWait | //input[@value='Save'] | |
+verifyTextPresent | Table has been created. | |
+
+
+
+Foreign key |
+
+
+open | /adminer/?mssql=%28local%29&username=ODBC&db=adminer_test&ns=dbo&table=albums | |
+clickAndWait | link=Add foreign key | |
+selectAndWait | table | label=interprets |
+select | source[0] | label=interpret |
+clickAndWait | //input[@value='Save'] | |
+verifyTextPresent | Foreign key has been created. | |
+
+
+
+Alter table |
+
+
+open | /adminer/?mssql=%28local%29&username=ODBC&db=adminer_test&ns=dbo&table=interprets | |
+clickAndWait | link=Alter table | |
+click | add[2] | |
+type | fields[3][field] | albums |
+select | fields[3][type] | label=int |
+type | fields[3][length] | |
+uncheck | name=defaults | |
+clickAndWait | name=defaults | |
+type | name=fields[3][default] | 0 |
+clickAndWait | //input[@value='Save'] | |
+verifyTextPresent | Table has been altered. | |
+
+
+
+Check constraints |
+
+
+open | /adminer/?mssql=%28local%29&username=ODBC&db=adminer_test&ns=dbo&table=albums | |
+click | link=Create check | |
+type | name=name | albums_interpret_check |
+runScript | document.querySelector('[name="clause"]').value = 'interpret > 0' | |
+click | xpath=//input[@value='Save'] | |
+verifyTextPresent | Check has been created. | |
+open | /adminer/?mssql=%28local%29&username=ODBC&db=adminer_test&ns=dbo&check=albums&name=albums_interpret_check | |
+verifyTextPresent | ([interpret]>(0)) | |
+chooseOkOnNextConfirmation | Drop albums_interpret_check? | |
+click | name=drop | |
+verifyTextPresent | Check has been dropped. | |
+
+
+
+Create view |
+
+
+open | /adminer/?mssql=%28local%29&username=ODBC&db=adminer_test&ns=dbo&view= | |
+runScript | document.querySelector('[name="select"]').value = 'SELECT albums.id, albums.title, interprets.name FROM albums LEFT JOIN interprets ON albums.interpret = interprets.id' | |
+type | name | albums_interprets |
+clickAndWait | //input[@value='Save'] | |
+verifyTextPresent | View has been created. | |
+
+
+
+Insert |
+
+
+open | /adminer/?mssql=%28local%29&username=ODBC&db=adminer_test&ns=dbo&edit=interprets | |
+type | fields[name] | Michael Jackson |
+clickAndWait | //input[@value='Save'] | |
+verifyTextPresent | Item 1 has been inserted. | |
+open | /adminer/?mssql=%28local%29&username=ODBC&db=adminer_test&ns=dbo&edit=albums | |
+type | fields[interpret] | 1 |
+type | fields[title] | Dangerous |
+clickAndWait | //input[@value='Save'] | |
+verifyTextPresent | Item 1 has been inserted. | |
+
+
+
+Clone |
+
+
+open | /adminer/?mssql=%28local%29&username=ODBC&db=adminer_test&ns=dbo&select=albums | |
+click | check[] | |
+clickAndWait | clone | |
+type | fields[title] | Black and White |
+clickAndWait | //input[@value='Save'] | |
+verifyTextPresent | Item 2 has been inserted. | |
+
+
+
+Explain |
+
+
+open | /adminer/?mssql=%28local%29&username=ODBC&db=adminer_test&ns=dbo&select=albums | |
+clickAndWait | link=Edit | |
+clickAndWait | //input[@value='Execute'] | |
+click | link=Explain | |
+verifyTextPresent | Clustered Index Scan | |
+
+
+
+Reference |
+
+
+open | /adminer/?mssql=%28local%29&username=ODBC&db=adminer_test&ns=dbo&select=albums | |
+clickAndWait | link=1 | |
+verifyTextPresent | Michael Jackson | |
+
+
+
+Update |
+
+
+open | /adminer/?mssql=%28local%29&username=ODBC&db=adminer_test&ns=dbo&edit=albums&where%5Bid%5D=2 | |
+type | fields[title] | Black or White |
+clickAndWait | //input[@value='Save'] | |
+verifyTextPresent | Item has been updated. | |
+
+
+
+Delete |
+
+
+open | /adminer/?mssql=%28local%29&username=ODBC&db=adminer_test&ns=dbo&select=albums | |
+click | //input[@name='check[]' and @value='where%5Bid%5D=2'] | |
+waitForChecked | //input[@name='check[]' and @value='where%5Bid%5D=2'] | |
+chooseOkOnNextConfirmation | Are you sure? | |
+click | delete | |
+verifyTextPresent | 1 item has been affected. | |
+
+
+
+Truncate |
+
+
+open | /adminer/?mssql=%28local%29&username=ODBC&db=adminer_test&ns=dbo&select=albums | |
+click | all | |
+waitForChecked | all | |
+chooseOkOnNextConfirmation | Are you sure? | |
+click | delete | |
+verifyTextPresent | No rows. | |
+
+
+
+Export |
+
+
+open | /adminer/?mssql=%28local%29&username=ODBC&db=adminer_test&ns=dbo&dump= | |
+click | output | |
+click | format | |
+select | table_style | label=DROP+CREATE |
+select | data_style | label=INSERT |
+clickAndWait | //input[@value='Export'] | |
+verifyTextPresent | CREATE TABLE [dbo].[interprets] | |
+verifyTextPresent | INSERT INTO [dbo].[interprets] | |
+verifyTextPresent | VIEW [dbo].[albums_interprets] | |
+
+
+
+Drop |
+
+
+open | /adminer/?mssql=%28local%29&username=ODBC&db=adminer_test&ns=dbo | |
+click | id=check-all | |
+chooseOkOnNextConfirmation | Are you sure? | |
+click | name=drop | |
+verifyTextPresent | No tables. | |
+
+
+
+SQL command |
+
+
+open | /adminer/?mssql=%28local%29&username=ODBC&sql=SELECT+122%2B1 | |
+clickAndWait | //input[@value='Execute'] | |
+verifyTextPresent | 123 | |
+
+
+
+Logout |
+
+
+open | /adminer/?mssql=%28local%29&username=ODBC | |
+clickAndWait | logout | |
+verifyTextPresent | Logout successful. | |
+open | /coverage.php | |
+
+
+