I have a requirement to cumulatively-validate 3 integer fields, the sum of which shouldn't be greater than 10. This simple requirement sounded eminently achievable via an in-form 'calculate' or 'hidden' field included in the XLSForm, and attempts at using both seem to work with Connect (-which we are using in order to write to our own feature class). However, when published and tested in a Survey123 web app, the validations never trigger. I have added the calculation field to my feature, and have also ensured that I have set column bind::esri:fieldType to either smallInt or null (-it wouldn't publish without my doing that latter). None of these steps seem to cause the field to be validated in the web app. Is there a restriction to behaviours of these field-types in the web app ? Or: do they only work if initially added VIA the web designer ?
I am not sure why but I have run into a similar issue with some of my surveys. I have a pulldata calculation to reference coordinates for geopoints. It works great on Connect and in the App version of the survey, but does not work on the web version. My guess is that the web version of Survey123 is not as powerful and cannot handle some of the more complex tasks, but you would need to talk to a software engineer or someone to explain why and what the limit is.
I've seen a few posts similar to your own, and one or two solutions, eg: https://community.esri.com/t5/arcgis-survey123-questions/survey123-connect-pulldata-question/m-p/850.... Pulldata sounded a bit complicated for what I wanted, which I took to be quite a simple (!) requirement, particularly having read this post. At first it was simply publishing issues, which I solved by adding the calculated field to my feature, but since then no amount of ensuring the bind-settings are correct for integer, using the INT function on my variables etc has worked: the validation never triggers ! I've seen nothing that confirms that the web version isn't compatible in this respect, although I DID find a post that hinted that the underlying functionality had been upgraded last month.