<commit_before>sap.ui.define([
	'sap/ui/test/Opa5',
	'sap/ui/test/matchers/AggregationLengthEquals',
	'sap/ui/test/matchers/PropertyStrictEquals',
	'sap/ui/test/matchers/BindingPath',
	'sap/ui/test/matchers/I18NText',
	'sap/ui/test/actions/Press',
	'sap/ui/test/actions/EnterText'
], function (Opa5, AggregationLengthEquals, PropertyStrictEquals, BindingPath, I18NText, Press, EnterText) {
	"use strict";

	var sViewName = "App",
		sTableId = "peopleList";

	function getListBinding(oTable) {
		return oTable.getBinding("items");
	}

	function getFirstTableEntry(oTable) {
		return getListBinding(oTable).getCurrentContexts()[0];
	}

	Opa5.createPageObjects({
		onTheTutorialPage : {
			actions : {
				iPressOnMoreData : function () {
					// Press action hits the "more" trigger on a table
					return this.waitFor({
						id : sTableId,
						viewName : sViewName,
						actions : new Press(),
						errorMessage : "Table not found or it does not have a 'See More' trigger"
					});
				},

				iPressOnSort : function () {
					return this.waitFor({
						id : "sortUsersButton",
						viewName : sViewName,
						actions : new Press(),
						errorMessage : "Could not find the 'Sort' button"
					});
				},

				iPressOnAdd : function () {
					return this.waitFor({
						id : "addUserButton",
						viewName : sViewName,
						actions : new Press(),
						errorMessage : "Could not find the 'Add' button"
					});
				},

				iPressOnDelete : function () {
					return this.waitFor({
						id : "deleteUserButton",
						viewName : sViewName,
						actions : new Press(),
						errorMessage : "Could not find the 'Delete' button"
					});
				},

				iPressOnSave : function () {
					return this.waitFor({
						id : "saveButton",
						viewName : sViewName,
						actions : new Press(),
						errorMessage : "Could not find the 'Save' button"
					});
				},

				iPressOnCancel : function () {
					return this.waitFor({
						id : "doneButton",
						viewName : sViewName,
						actions : new Press(),
						errorMessage : "Could not find the 'Cancel' button"
					});
				},

				iEnterSomeData : function (sValue) {
					return this.waitFor({
						controlType : "sap.m.Input",
						viewName : sViewName,
						matchers : [
							// Find the input fields for the new entry
							new BindingPath({
								path : "/People/-1"
							}),
							// Keep only empty input fields
							function (oItem) {
								return !oItem.getValue();<commit_msg>[INTERNAL] fix OPA for OData V4 Tutorial<commit_after>sap.ui.define([
	'sap/ui/test/Opa5',
	'sap/ui/test/matchers/AggregationLengthEquals',
	'sap/ui/test/matchers/PropertyStrictEquals',
	'sap/ui/test/matchers/BindingPath',
	'sap/ui/test/matchers/I18NText',
	'sap/ui/test/actions/Press',
	'sap/ui/test/actions/EnterText'
], function (Opa5, AggregationLengthEquals, PropertyStrictEquals, BindingPath, I18NText, Press, EnterText) {
	"use strict";

	var sViewName = "App",
		sTableId = "peopleList";

	function getListBinding(oTable) {
		return oTable.getBinding("items");
	}

	function getFirstTableEntry(oTable) {
		return getListBinding(oTable).getCurrentContexts()[0];
	}

	Opa5.createPageObjects({
		onTheTutorialPage : {
			actions : {
				iPressOnMoreData : function () {
					// Press action hits the "more" trigger on a table
					return this.waitFor({
						id : sTableId,
						viewName : sViewName,
						actions : new Press(),
						errorMessage : "Table not found or it does not have a 'See More' trigger"
					});
				},

				iPressOnSort : function () {
					return this.waitFor({
						id : "sortUsersButton",
						viewName : sViewName,
						actions : new Press(),
						errorMessage : "Could not find the 'Sort' button"
					});
				},

				iPressOnAdd : function () {
					return this.waitFor({
						id : "addUserButton",
						viewName : sViewName,
						actions : new Press(),
						errorMessage : "Could not find the 'Add' button"
					});
				},

				iPressOnDelete : function () {
					return this.waitFor({
						id : "deleteUserButton",
						viewName : sViewName,
						actions : new Press(),
						errorMessage : "Could not find the 'Delete' button"
					});
				},

				iPressOnSave : function () {
					return this.waitFor({
						id : "saveButton",
						viewName : sViewName,
						actions : new Press(),
						errorMessage : "Could not find the 'Save' button"
					});
				},

				iPressOnCancel : function () {
					return this.waitFor({
						id : "doneButton",
						viewName : sViewName,
						actions : new Press(),
						errorMessage : "Could not find the 'Cancel' button"
					});
				},

				iEnterSomeData : function (sValue) {
					return this.waitFor({
						controlType : "sap.m.Input",
						viewName : sViewName,
						matchers : [
							// Find the input fields for the new entry
							function (oControl) {
								return oControl.getBindingContext().getIndex() === 0;
							},
							// Keep only empty input fields
							function (oItem) {
								return !oItem.getValue();
{'fraction_non_alphanumeric': 0.1250501002004008, 'fraction_numerical': 0.003807615230460922, 'mean_word_length': 2.6166666666666667, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6277981', 'n_tokens_mistral': 2140, 'n_tokens_neox': 1551, 'n_words': 382}